相关疑难解决方法(0)

在POSIXct的向量上使用sapply

我有一个可能是一个非常简单的问题.我想从数据帧处理一列POSIXct对象并生成一个datetime字符串向量.我尝试使用以下sapply调用

dt <- sapply(df$datetime, function(x) format(x,"%Y-%m-%dT%H:%M:%S"))
Run Code Online (Sandbox Code Playgroud)

但无济于事.我一直收到以下错误:

> Error in prettyNum(.Internal(format(x, trim, digits, nsmall, width, 3L,  :
invalid 'trim' argument
Run Code Online (Sandbox Code Playgroud)

当我将此函数应用于列中的单个POSIXct对象时,我没有问题.关于问题是什么,我现在很难过.我是否需要对POSIXct对象做一些特别的事情?

r posixct sapply

7
推荐指数
1
解决办法
2880
查看次数

在R中使用apply with assign

请考虑以下示例:

Vars <- c("car","bike","lorry")
Dat <- c(10,20,22)

for (i in 1:length(Vars)){
  assign(Vars[i],Dat[i])
}
Run Code Online (Sandbox Code Playgroud)

在这里,我想在工作区中生成三个变量,这些变量根据条目Vars和中的值命名Dat.目前我正在使用循环,但我一直试图通过使用apply来删除循环,这样做的最佳方法是什么?

loops r apply

6
推荐指数
1
解决办法
2096
查看次数

为什么将数据帧中的转换逻辑应用于5个字符的字符串?

假设我有一个数据框:

mydf <- data.frame(colA = c(1,20), colB = c("a", "ab"), colC = c(T, F))
Run Code Online (Sandbox Code Playgroud)

现在假设我想对数据框中的每一行应用一个函数。此函数使用列C的布尔值。使用时apply,每个非字符串都将转换为该列中存在的最大长度的字符串:

> apply(mydf, 1, '[', 3)
[1] " TRUE" "FALSE"
Run Code Online (Sandbox Code Playgroud)

该字符串" TRUE"不再可解释为逻辑。

> ifelse(apply(mydf, 1, '[', 3), 1, 2)
[1] NA  2
Run Code Online (Sandbox Code Playgroud)

我可以用来解决此问题gsub(" ", "", x),但我敢肯定有更好的方法。为什么apply仅将逻辑直接转换为字符串时会有这种行为?是否存在apply不具有上述行为的类似函数?

r apply dataframe

5
推荐指数
1
解决办法
625
查看次数

R dplyr:在列中查找特定值,然后使用该值替换右侧后续列中的相邻单元格

我正在尝试创建一个站点和事件时间矩阵.在我的情况下,一旦事件发生("1"),它是永久性的,不能回到"0".一旦列中的单元格为"1",我将尝试使用"1"填充右侧后续列中的相邻单元格(请参阅下面的示例).

site <- c('A','B','C','D','E','F','G') #site
time <- c(0,1,4,0,3,2,0) # time in which even occured
event <- c(0,1,1,0,1,1,0) # did a event occur
data <- data.frame(site, time, event)

site.time.matrix <- cast(data, site~time)

# This is the output      # This is the desired output
#site   0  1  2  3  4     #site   0  1  2  3  4
#    A  0 NA NA NA NA     #    A  0  0  0  0  0
#    B NA  1 NA NA NA     #    B  0  1  1 …
Run Code Online (Sandbox Code Playgroud)

r apply lapply sapply dplyr

5
推荐指数
1
解决办法
438
查看次数

对每一列应用一个函数

我是 R 新手,我想将数据集 168 列中的每个值除以相应列的 SD。

我试过:

new<- for (i in 1:168 (df))

function(x){
  x/sd(x, na.rm=TRUE)
}
}
Run Code Online (Sandbox Code Playgroud)

但这没有用。这是我第一次使用循环或函数。因此,我很乐意得到您的帮助。这是我的数据集(3 列)中的一个示例。有 168 列,第 169 列有 ID。

structure(list(var1 = c(1, 2, 35, 5, 22, 26.5, 31, 35.5, 40, 
44.5, 49, 53.5, 58, 62.5, 67, 71.5, 76, 80.5, 85), var2 = c(1, 
2, 4, 5.33333333333333, 6.83333333333333, 8.33333333333333, 9.83333333333333, 
11.3333333333333, 12.8333333333333, 14.3333333333333, 15.8333333333333, 
17.3333333333333, 18.8333333333333, 20.3333333333333, 21.8333333333333, 
23.3333333333333, 24.8333333333333, 26.3333333333333, 27.8333333333333
), var3 = c(2, 1, 3, 3, 3.5, 4, 4.5, 5, 5.5, 6, …
Run Code Online (Sandbox Code Playgroud)

r

2
推荐指数
1
解决办法
2685
查看次数

标签 统计

r ×5

apply ×3

sapply ×2

dataframe ×1

dplyr ×1

lapply ×1

loops ×1

posixct ×1