R: data.table - добавление переменной в список таблиц данных, которая содержит имя каждой таблицы в списке. - PullRequest
0 голосов
/ 05 мая 2020

В настоящее время я работаю в R с data.table и пытаюсь добавить переменную «data_set» в список таблиц данных, который содержит имя этого элемента в списке.

Например - список таблиц med, symp и care, и я хотел бы добавить переменную data_set в каждую таблицу, где в таблице данных med «data_set» будет равно «med», а в таблице данных symp, data_set будет равняться symp. Я знаю, что могу использовать lapply для этого, но я застрял в том, как сохранить имя каждой таблицы в переменной "data_set". Я знаю, что это будет go что-то вроде этого ....

   tables<-c("med", "symp", "care")
   tables_1<-lapply(mget(tables),function(x)x[, data_set:=…...])

Как я могу указать и сохранить имя каждой таблицы данных в переменной «data_set»?

1 Ответ

2 голосов
/ 05 мая 2020

Я предлагаю вам использовать Map вместо lapply здесь.

med <- data.table(a=1); symp <- data.table(b=1); care <- data.table(d=1)
tables <- c("med", "symp", "care")
tables_1 <- Map(function(x, nm) copy(x)[, data_set := nm], mget(tables), tables)
tables_1
# $med
#    a data_set
# 1: 1      med
# $symp
#    b data_set
# 1: 1     symp
# $care
#    d data_set
# 1: 1     care

Я использую copy , подразумевая , что ваше использование lapply не требует дополнительных -эффект. Без copy к вашим переменным global-env (med, symp, care) также был бы добавлен столбец. Это может быть желательно и / или приемлемо, и в этом случае удалите copy, чтобы уменьшить объем памяти.

...