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)
我们可以创建一个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)