С data.table
легко удалить имена аргументов без кавычек. Если вы начинаете писать функции с использованием имен переменных, я рекомендую вам использовать data.table
(см. сообщение в блоге, которое я написал на эту тему ).
С одной переменной вы будете использовать get
чтобы снять кавычки с именем переменной
library(data.table)
data <- data.table(x = rnorm(10))
myvar <- "x"
data[, out := get(myvar) + 5]
data
x out
1: -0.30229987 4.697700
2: 0.51658585 5.516586
3: 0.12180432 5.121804
4: 1.53438805 6.534388
5: 0.06213513 5.062135
6: 0.17935070 5.179351
7: 0.70002065 5.700021
8: 0.12067590 5.120676
9: -0.41002931 4.589971
10: 0.45385072 5.453851
Обратите внимание, что мне не нужно переназначать результат, потому что :=
обновляется по ссылке.
С несколькими переменными вы будете использовать .SD
+ lapply
. Этот синтаксис означает применение чего-либо к Подмножеству данных (.SD). Аргумент .SDcols
используется для контроля того, какие столбцы рассматриваются в подмножестве данных.
Это очень общий подход, который работает во многих ситуациях.
data <- data.table(x = rnorm(10), y = rnorm(10))
data[, c('out1','out2') := lapply(.SD, function(x) return(x + 5)), .SDcols = c("x","y")]
data
x y out1 out2
1: 0.91187875 -0.2010539 5.911879 4.798946
2: -0.70906903 0.2074829 4.290931 5.207483
3: -0.52517961 0.2027444 4.474820 5.202744
4: 0.09967933 -1.2315601 5.099679 3.768440
5: -0.40392510 -0.1777705 4.596075 4.822229
6: 0.65891623 0.2394889 5.658916 5.239489
7: 0.76275090 1.5695957 5.762751 6.569596
8: -0.52395704 -0.7083462 4.476043 4.291654
9: 0.52728890 -1.1308284 5.527289 3.869172
10: -1.00418691 -0.5569468 3.995813 4.443053
Я мог бы использовать этот подход с одним столбцом (.SDcols = 'x').