我有一个如下所示的数据表:
X <- data.table(
A1 = 1:3 %>% as.character,
A2 = 1:3 %>% as.character,
B1 = 1:3 %>% as.character,
B2 = 1:3 %>% as.character
)
目标是使用A
和{{1}从A1
转换为A2
个(例如X
,.SD
)变量的数字在一行代码中。
鉴于以下操作正确返回目标变量的名称:
.SDcols
我试图直接更新它们:
> X[, (names(.SD)), .SDcols = names(X) %like% "A"]
[1] "A1" "A2"
但它意外地返回错误:
X[, (names(.SD)) := lapply(.SD, as.numeric), .SDcols = names(X) %like% "A"]
我发现这个2行代码解决方案有效:
Error in `[.data.table`(X, , `:=`((names(.SD)), lapply(.SD, as.numeric)), :
LHS of := isn't column names ('character') or positions ('integer' or 'numeric')
有没有办法在一行代码中使用.cols <- names(X) %like% "A"
X[, (names(X)[.cols]) := lapply(.SD, as.numeric), .SDcols = .cols]
和.SD
来实现这一目标?