我正在尝试对我的数据集进行转换(变量均值(变量))但是按id类别进行转换。我得到一个常见的错误
Type of RHS ('double') must match LHS ('integer').
我从未真正理解过。由于类型不同,data.table无法将新变量分配给旧变量?但一切都是数字......例如:
test <- data.table(id=rep(1:10,each=20),time=rep(1991:2010,10),
y=rbinom(200,1,0.1),
x1=rnorm(200,mean=5,sd=2),
x2=rnorm(200),
x3=rbeta(200,shape1=1,shape2=2))
cols <- c("y","x1","x2","x3")
test[ , (cols) := lapply(.SD, function(x){x-mean(x,na.rm=T)}), .SDcols = cols,by=id]
此代码改编自this问题,如果删除by=id
参数,则可以正常使用。我错过了什么?