Создайте новый столбец в data.frames в списке и заполните его конкретными повторяющимися значениями

Вот пример моего списка (на самом деле у меня> 2000 df в реальном):

df1 = read.table(text = 'a b
1 66
1 999
23 89', header = TRUE)

df2 = read.table(text = 'a b
99 61
32 99
83 19', header = TRUE)

lst = list(df1, df2)

Мне нужно создать новый столбец для каждого data.frame в списке и заполнить каждый столбец определенным номером.

numbers = c(100, 200)

поэтому мой результат должен быть:

> lst
[[1]]
   a   b  new_col
1  1  66   100
2  1 999   100
3 23  89   100

[[2]]
   a  b  new_col
1 99 61   200
2 32 99   200
3 83 19   200

С lapply я смог создать новый пустой столбец для каждого data.frame:

lst = lapply(lst, cbind, new_col = '')

> lst
[[1]]
   a   b new_col
1  1  66        
2  1 999        
3 23  89        

[[2]]
   a  b new_col
1 99 61        
2 32 99        
3 83 19 

Но я не знаю, как заполнить столбцы моим вектором чисел.

Спасибо


person aaaaa    schedule 15.03.2017    source источник
comment
Пожалуйста, задайте новый вопрос с вашим воспроизводимым списком и вектором вместо обновления этого. Редактирование этого может сделать правильный ответ недействительным.   -  person Rich Scriven    schedule 21.03.2017
comment
Привет, новый список в основном такой же, как и старый. Почему я получаю эту ошибку?   -  person aaaaa    schedule 21.03.2017
comment
Не могу сказать, потому что он отлично работает с текущими данными.   -  person Rich Scriven    schedule 21.03.2017


Ответы (1)


Чтобы одновременно перебирать и список data.frames, и вектор чисел, используйте Map(). Например

Map(cbind, lst, new_col=numbers)
# [[1]]
#    a   b new_col
# 1  1  66     100
# 2  1 999     100
# 3 23  89     100
# 
# [[2]]
#    a  b new_col
# 1 99 61     200
# 2 32 99     200
# 3 83 19     200
person MrFlick    schedule 15.03.2017