我有一个无法在 data.table 中正确解决的问题。我有以下数据:
plouf <- data.table( ID = rep(LETTERS[1:10],each = 10) )
plouf[,c(paste0("X",1:10)) := lapply(1:10,function(x){sample(10,100,replace = T)})]
有两件事时不时地阻碍我:
col <- "X1"
plouf[get(col) > 5, .(col = get(col)[1]) ,by = ID]
ID col
1: A 7
2: B 7
3: C 9
4: D 6
5: E 8
6: F 7
7: G 6
8: H 7
9: I 6
10: J 7
该列被命名为“col”而不是“X1”。我尝试过eval
, get
,没听懂。
和同类:
col <- 1
plouf[get(paste0("X",col)) > 5, .(paste0("X",col) = get(paste0("X",col))[1]) ,by = ID]
Error: unexpected '=' in "plouf[get(paste0("X",col)) > 5, .(paste0("X",col) ="
我尝试过这个命名列表时使用粘贴 :
plouf[get(paste0("X",col)) > 5,setNames( get(paste0("X",col))[1],paste0("X",col)) ,by = ID]
ID V1
1: A 7
2: B 7
3: C 9
4: D 6
5: E 8
6: F 7
7: G 6
8: H 7
9: I 6
10: J 7
但这不是想要的结果。有人可以解释一下它是如何工作的吗?