如何为R中的数据表创建循环?

tmh*_*mhs -1 loops r data.table

我有一项任务要对多行执行以下操作,我想知道是否可以将循环用于此类计算,而无需逐行键入。

我试过了,但似乎在 [] 括号内,该函数似乎没有否决我想做的事情。任何建议表示赞赏!

data[, d1:= difference < 2]
data[, d2:= difference < 3]
data[, d3:= difference < 4]
data[, d4:= difference < 5]
data[, d5:= difference < 6]
data[, d6:= difference < 7]
data[, d7:= difference < 8]
data[, d8:= difference < 9]
data[, d9:= difference < 10]
data[, d10:= difference < 11]

data$d1 <- as.numeric(data$d1)
data$d2 <- as.numeric(data$d2)
data$d3 <- as.numeric(data$d3)
data$d4 <- as.numeric(data$d4)
data$d5 <- as.numeric(data$d5)
data$d6 <- as.numeric(data$d6)
data$d7 <- as.numeric(data$d7)
data$d8 <- as.numeric(data$d8)
data$d9 <- as.numeric(data$d9)
data$d10 <- as.numeric(data$d10)
Run Code Online (Sandbox Code Playgroud)

akr*_*run 5

我们可以创建一个for循环并分配 ( :=) 来创建新列

for(j in 1:10){
    data[, paste0("d", j) := as.integer(difference < (j+1))]
}
Run Code Online (Sandbox Code Playgroud)

或使用 set

data[, paste0("d", 1:10) := 0L]
for(j in 1:10){       
   set(data, i = which(data[["difference"]] <  (j + 1)), j = paste0("d", j),
        value = 1L)
}
Run Code Online (Sandbox Code Playgroud)

  • 通常最好将 `set` 与 `for` 循环一起使用。 (2认同)