Lapply для добавления столбцов в каждую фреймворк в списке

мой вопрос в два раза.

  • У меня есть список фреймов данных и использование lapply в R, я хотел бы добавить столбец в каждый фрейм данных в списке.
  • Добавленный столбец должен, по возможности, принимать значения последовательно из списка. У меня есть список с той же длиной, что и список фреймов данных, и каждое значение в этом списке должно быть добавленным значением столбца.

Причина, по которой я делаю это, заключается в том, что имя файла для каждого набора данных, который я импортирую, содержит информацию о дате, например. имя файла содержит Jun12_2003. Поэтому я хочу импортировать каждый набор данных, а затем назначать столбец для года и даты, беря информацию из имени файла (до сих пор занимаясь этой частью с помощью регулярного выражения).

Спасибо за любую помощь!

Ответы

Ответ 1

Используйте Map. Это сокращение для mapply(..., SIMPLIFY = FALSE), как было предложено Ари.

df1 <- data.frame(x = runif(3), y = runif(3))
df2 <- data.frame(x = runif(3), y = runif(3))
dfs <- list(df1, df2)
years <- list(2013, 2014)

Map(cbind, dfs, year = years)
# [[1]]
#           x         y year
# 1 0.8843945 0.6285246 2013
# 2 0.8400041 0.1369520 2013
# 3 0.4398870 0.4660476 2013
# 
# [[2]]
#           x         y year
# 1 0.4153315 0.5831114 2014
# 2 0.9685105 0.2398060 2014
# 3 0.9507591 0.7585670 2014