簡體   English   中英

在R中的data.table行上循環

[英]Looping on rows of a data.table in R

給定如下定義的數據表

set.seed(123) 
ds <- data.table(x = rnorm(10), y = rnorm(10), z = rnorm(10))

推薦使用哪種方法循環遍歷data.table的行並獲取每行每一列中的某個值的向量在某個范圍(例如-0.5和0.5)之間,而避免使用for()?

並獲得某種類型的答案

for (i in 1:10) {
   print(sum(-0.5 < ds[i] & ds[i] < 0.5))
}

如果我只想將其應用於vector中定義的某些特定列,例如:

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

您可以通過.SDcols提供所需的列:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM