Rownames как столбец в списке данных
Я хотел бы создать год столбца для каждого кадра данных в списке на основе его имен строк. Этот вопрос был задан ранее на SO, но, к сожалению, ответ не помогает. Так есть ли способ сделать это?
mylist <- list(structure(list(a = 1:10), .Names = "a", row.names = 1991:2000, class = "data.frame"),
structure(list(a = 1:10), .Names = "a", row.names = 1992:2001, class = "data.frame"))
Ожидаемый результат:
[[1]]
a year
1991 1 1991
1992 2 1992
1993 3 1993
1994 4 1994
1995 5 1995
1996 6 1996
1997 7 1997
1998 8 1998
1999 9 1999
2000 10 2000
[[2]]
a year
1992 1 1992
1993 2 1993
1994 3 1994
1995 4 1995
1996 5 1996
1997 6 1997
1998 7 1998
1999 8 1999
2000 9 2000
2001 10 2001
2 ответа
Решение
Мы можем использовать Map
Map(cbind, mylist, year= lapply(mylist, rownames))
Вот еще один вариант:
lapply(mylist, function(df) transform(df, year = rownames(df)))
Просто для удовольствия, вы также можете использовать dplyr add_rownames
функция:
lapply(mylist, dplyr::add_rownames, 'year')