我正在尝试以有效的方式为 data.table 设置值。以下代码可以完成我想要的操作,但对于大型数据集来说太慢了:
DTcars<-as.data.table(mtcars)
for(i in 1:(dim(DTcars)[1]-1)){
for(j in 1:dim(DTcars)[2]){
if(DTcars[i,j, with=F]>10){
set(DTcars,
i=as.integer(i),
j =as.integer(j) ,
value = DTcars[dim(DTcars)[1],j,with=F])
}
}
}
我想要这样的东西......这完全是一个错误的代码,但表达了我的需要,我认为它会更快。这意味着我想对 data.table 进行子集化,并为特定列插入相同的值,并对每列重复。
DTcars<-as.data.table(mtcars)
ns<-names(DTcars)
for(j in 1:length(ns)){
DTcars[ns[j]>10]<-DTcars[20,ns[j]]
}
最佳答案
我认为您正在寻找
for (j in names(DTcars)) set(DTcars,
i = which(DTcars[[j]]>10),
j = j,
value = tail(DTcars[[j]],1)
)
列号或名称可以用作此处的 for
迭代器。
值
在OP中的两段代码之间发生变化,所以我不确定这一点。
关于r - 在 R : Setting new Values in a data. 表中快速,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31590587/