Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中data.table的行上循环_R_Loops_Data.table - Fatal编程技术网

在R中data.table的行上循环

在R中data.table的行上循环,r,loops,data.table,R,Loops,Data.table,给定如下定义的数据表 set.seed(123) ds <- data.table(x = rnorm(10), y = rnorm(10), z = rnorm(10)) set.seed(123) ds这里有一种方法: ds[, Reduce('+', lapply(.SD, function(x) -0.5 < x & x < 0.5))] #[1] 0 3 1 2 1 0 2 1 0 2 另外:rowSums(介于(ds,-0.5,0.5,FALSE)之间

给定如下定义的数据表

set.seed(123) 
ds <- data.table(x = rnorm(10), y = rnorm(10), z = rnorm(10))
set.seed(123)
ds这里有一种方法:

ds[, Reduce('+', lapply(.SD, function(x) -0.5 < x & x < 0.5))]
#[1] 0 3 1 2 1 0 2 1 0 2

另外:
rowSums(介于(ds,-0.5,0.5,FALSE)之间)
@Arun-yep-我的目标是避免额外的矩阵转换,以保持更快的
@Arun尝试将
之间的
部分与上面的
N=1e7进行计时;好的,谢谢。将此移到C,看看是否可以获得一些性能。
cols <- c(1,3)
for (i in 1:10) {
   print(sum(-0.5 < ds[i,cols,with=F] & ds[i,cols,with=F] < 0.5))
}
ds[, Reduce('+', lapply(.SD, function(x) -0.5 < x & x < 0.5))]
#[1] 0 3 1 2 1 0 2 1 0 2
ds[, Reduce('+', lapply(.SD, function(x) -0.5 < x & x < 0.5)), .SDcols = cols]
#[1] 0 2 0 1 1 0 1 1 0 1