отменить список данных.таблицы с индексом списка

#r #data.table

#r #data.table

Вопрос:

У меня есть список таблиц data.tables, и я хотел связать их вместе с новым столбцом с индексом списка. В настоящее время я использую rbindlist() from data.tables, но я хотел бы сохранить информацию о его индексе списка. Можете ли вы помочь мне сделать это?

 set.seed(1)
x1<- data.table(x = LETTERS, y = runif(26))
x2<- data.table(x = LETTERS, y = runif(26))
l1 <- list(x1, x2)
#  head(x1)
#    x         y
# 1: A 0.2655087
# 2: B 0.3721239
# 3: C 0.5728534
# 4: D 0.9082078
# 5: E 0.2016819
# 6: F 0.8983897

#  head(x2)
#    x          y
# 1: A 0.01339033
# 2: B 0.38238796
# 3: C 0.86969085
# 4: D 0.34034900
# 5: E 0.48208012
# 6: F 0.59956583
  

ожидаемый результат

   x         y  g
  A 0.2655087  1
  B 0.3721239  1
  C 0.5728534  1
  D 0.9082078  1
  E 0.2016819  1
  F 0.8983897  1
        .
        .
        .
  A 0.01339033 2
  B 0.38238796 2
  C 0.86969085 2
  D 0.34034900 2
  E 0.48208012 2
  F 0.59956583 2
        .
        .
        .
  

Комментарии:

1. rbindlist(l1, idcol='g') ? Я предполагаю idcol , что опция все еще находится в v.1.9.6

2. Ах! дерьмо! Я недостаточно изучал документацию! Спасибо!

3. @theArun не стесняйтесь отвечать самостоятельно, на ваш вопрос могут прийти будущие читатели. akrun не нужно больше очков SO 🙂

Ответ №1:

как указывает @akrun, выходы idcol доступны в data.tables из v.1.9.6

 rbindlist(l1, idcol = 'g')
  

Комментарии:

1. дополнительное уточнение — если вы хотите, чтобы значения g были другими, чем 1 , … , length(l1) , убедитесь l1 , что это имя. g будут заполнены именами элемента списка, соответствующими тому, откуда он взят.