Не хочу портить data.table
партии, но с tidyr
это будет один лайнер, если вы получите в индексе столбца, который затем можно удалить дополнительный X
(если вы хотите), используя в качестве gsub
следующим образом:
library(tidyr)
library(data.table)
setDT(unnest(listOfDataframes, "c"))[, c := gsub("X", "", c)][]
# c a b
# 1: 1 0.3852528 -0.6886418
# 2: 1 -2.3344659 -1.6770465
# 3: 1 -0.8241178 -0.1445429
# 4: 1 -1.5560673 -1.4205030
# 5: 1 0.5981992 0.3564583
# ---
# 496: 10 0.1460643 1.1055989
# 497: 10 0.3094036 -0.4239363
# 498: 10 0.7756495 0.7656453
# 499: 10 1.0037946 -0.2417804
# 500: 10 -0.1241405 3.2421323
вы также можете изменить порядок столбцов по ссылке, если вы хотите (если вы сохранили этот объект позволяет говорить в Res
), используя функцию setcolorder
setcolorder(Res, c(2, 3, 1))
Отличный ответ. Какова цель 1L в vapply? – codeln
@codeln, когда вы используете 'vapply' (в отличие от, например,' sapply'), вам нужно предоставить «шаблон», который определяет ожидаемый формат вывода. В этом случае вывод для 'nrow' является единственным целым числом, поэтому мы укажем его как« 1L ». – A5C1D2H2I1M1N2O1R2T1
Вы также можете просто сделать это в одной строке, например 'rbindlist (Map (cbind, listOfDataframes, c = seq_len (length (listOfDataframes))))' хотя и не уверен в эффективности. –