【发布时间】:2020-07-23 09:18:27
【问题描述】:
我想写一个从数据框中取出变量列表的函数,比如:
df <- data.frame(a = c(1,2,3,4,5), b = c(6,7,8,9,10))
并且要始终计算相同的计算,例如计算标准偏差:
test.function <- function(var){
for (i in var) {
paste0(i, "_per_sd") <- i / sd(i)
}
}
为了创建一个新变量 a_per_sd 除以它的标准差。不幸的是,我遇到了Error in paste0(i, "_per_sd") <- i/sd(i) : could not find function "paste0<-" 错误。
预期的用法应该是:
test.function(df$a, df$b)
预期的结果应该是:
> df$a_per_sd
[1] 0.6324555 1.2649111 1.8973666 2.5298221 3.1622777
对于给定的所有其他变量。 不知何故,我认为我应该使用 as.formula 和/或 eval,但我可能正在做一个思考错误。 非常感谢您的关注和帮助。
【问题讨论】:
-
你从哪里得到
sds?获得相同值的sd对我来说似乎并不直观。 -
标准差应该在整个列上计算(在这种情况下,i 在循环中)。在这种情况下,整个 df$a 的 sd 是 1.581139,我希望变量的每一行都除以 sd。