我想按小组贬低整个console.dir(m)
对象(或只是其中许多列的列表)。
到目前为止,这是我的方法:
data.table
给出了
setkey(myDt, groupid)
for (col in colnames(wagesOfFired)){
myDt[, paste(col, 'demeaned', sep='.') := col - mean(col), with=FALSE]
}
这是一些示例数据。在这个简单的例子中,只有两列,但我通常有很多列,所以我想迭代列表
Error in col - mean(col) : non-numeric argument to binary operator
答案 0 :(得分:5)
问题是col
是一个字符串,因此无法计算col-mean(col)
。
myNames <- names(myDt)
myDt[,paste(myNames,"demeaned",sep="."):=
lapply(.SD,function(x)x-mean(x)),
by=groupid,.SDcols=myNames]
评论:
[
可能会很慢。myNames
更改为列名的某个子集。