我正在尝试以有效的方式将值设置为data.table。以下代码将执行我想要的操作,但对于大型数据集来说速度太慢了:
<script src="https://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min.js"></script>
<div id="BlockOutside">
<div id="BlockInside"></div>
</div>
我想要这样的东西......这完全是错误的代码,但表达了我的需要,我认为它会更快。这意味着我想要对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])
}
}
}
答案 0 :(得分:3)
我认为你正在寻找
for
列号或名称可以在这里用作value
迭代器。
OP中两段代码之间的{{1}}发生了变化,所以我对此并不确定。
答案 1 :(得分:2)
IMO set
应该谨慎使用,而且常规:=
几乎总是足够的:
for (col in names(DTcars))
DTcars[get(col) > 10, (col) := get(col)[.N]]