R数据表在单行代码中更新.SD和.SDcols列

时间:2017-11-23 11:19:26

标签: r data.table

我有一个如下所示的数据表:

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来实现这一目标?

0 个答案:

没有答案