Я читаю файл yaml, например
- person_id: 111
person_name: Russell
time:
- 1
- 2
- 3
value:
- a
- b
- c
- person_id: 222
person_name: Steven
time:
- 1
- 2
value:
- d
- e
что я хочу денормализовать:
person_id person_name time value
1 111 Russell 1 a
2 111 Russell 2 b
3 111 Russell 3 c
4 222 Steven 1 d
5 222 Steven 2 e
У меня есть решение, но я надеялся, что есть что-то более краткое. Вот вложенный список:
l <- list(
list(
person_id = 111L,
person_name = "Russell",
time = 1:3,
value = letters[1:3]
),
list(
person_id = 222L,
person_name = "Steven",
time = 1:2,
value = letters[4:5]
)
)
Что касается возможных дубликатов, этот вопрос аналогичен (1) Как денормализовать вложенный список в R?, но структура отличается ( Структура round
/diff
/saldo
перенесена по сравнению с time
/value
здесь) и (2) Разделить столбец, разделенный запятыми, на отдельные строки, но time
– это вектор, а не элемент, разделенный запятыми, как director
. Я надеюсь, что эта другая структура поможет.
do.call(rbind, lapply(l, data.frame))
. - person lmo   schedule 12.11.2017lapply()
копирует родительские переменныеperson_id
иperson_name
. Если вы опубликуете это как ответ, я бы с удовольствием проголосовал за него. - person wibeasley   schedule 12.11.2017