在R中:快速设置data.table中的新值

时间:2015-07-23 14:39:21

标签: r data.table

我正在尝试以有效的方式将值设置为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])
    }
  }
}

2 个答案:

答案 0 :(得分:3)

我认为你正在寻找

for

列号或名称可以在这里用作value迭代器。

OP中两段代码之间的{{1}}发生了变化,所以我对此并不确定。

答案 1 :(得分:2)

IMO set应该谨慎使用,而且常规:=几乎总是足够的:

for (col in names(DTcars))
  DTcars[get(col) > 10, (col) := get(col)[.N]]