考虑以下代码:
library(data.table)
dataT <-data.table(1:15,runif(15),runif(15),runif(15))
for(vrb in names(dataT)) {
dataT[get(vrb) < 0.5, (vrb):=0.5] # update value
}
从代码中可以推断出,我基本上将每列的最低值限制为 0.5。为了对行进行子集化,我使用了
get
函数。这是正确的做法,还是有其他更符合data.table的方法?
最佳答案
我们可以使用 set
for(vrb in names(dataT)){
set(dataT, i = which(dataT[[vrb]] < 0.5), j = vrb, value = 0.5)
}
第一列中的元素 > 0.5。因此,我们可以将
set
应用于除第一列之外的列for(vrb in names(dataT)[-1]){
set(dataT, i = which(dataT[[vrb]] < 0.5), j = vrb, value = 0.5)
}
关于r - 根据列值更新 data.table 中的列值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40101828/