【发布时间】:2015-05-06 11:16:13
【问题描述】:
我试图在数据表中使用 lapply 将参数传递给函数,只有参数是变量名(在函数中调用)。 wtd.var 函数来自 Hmisc。 使用虹膜的示例:
library(Hmisc)
library(data.table)
iris <- as.data.table(iris)
weights.v ="Sepal.Length"
iris[,lapply(.SD,wtd.var,weights=weights.v),by = "Species"]
抛出一个错误,自然是因为变量是一个字符串。我尝试了各种组合或 paste0 并解析,但 get() 似乎可以做到-
iris[,lapply(.SD,wtd.var,weights=get(weights.v)),by = "Species"]
这行得通。但是当我尝试使用 .SDcols 时,它会被忽略
iris[,lapply(.SD,wtd.var,weights=weights.v),by = "Species",.SDcols=c("Petal.Length")]
有没有更好的方法来实现我正在做的事情?
【问题讨论】:
-
@docendodiscimus
setDT(iris)不起作用... -
@DavidArenburg,请随时纠正它,以便它将工作
-
@DavidArenburg,在我的会话中它似乎确实有效 - 为什么不应该呢?
-
@docendodiscimus 因为this 它对你有用很奇怪。它对我不起作用,这是记录在案的行为(根据 Aruns 的回答)。
-
@DavidArenburg,好吧,我没有任何单一的错误消息,之后虹膜打印得很好(作为 data.table)..
标签: r function data.table lapply