У меня есть список из 11 фреймов данных, и я хочу создать новый столбец в каждом фрейме данных и заполнить столбец годом как c(2005:2015)
. Проблема в том, что он повторяет 11 элементов (лет) для 255 строк в кадре данных и, следовательно, показывает ошибку. То, что я хочу, это не должно повторяться для строк в кадрах данных, но итерация для кадров данных в списке. Таким образом, первый кадр данных имеет 255 строк года, показывающих значение 2005 и т. Д.
Я попробовал следующий код, но так же, как я сказал. Он выполняет итерации внутри фрейма данных, вместо этого я хочу, чтобы он заполнял только одно значение для каждого фрейма данных и выполнял итерацию по списку, а не на один уровень ниже.
tf2 <- lapply(tf2, function(x) mutate(x, YEAR = c(2005:2015)))
Примечание: mutate
нельзя напрямую применить к объекту класса list
.
Я пытаюсь что-то новое, как это, но мой код ошибочен, его нужно исправить.
year <- c(2005:2015)
ChangeYears = function(x)
{
for i in 1:length(tf2)
{
x[i] <- lapply(mutate(YEAR = c(year[i])))
}
}
tf2 <- lapply(tf2, ChangeYears)
На основании изменений, предложенных @GSW, я пытаюсь это сделать
ChangeYears = function(x){
for(i in 1:11) {
x[[i]] = cbind(x[[i]], Year=2004+i) }
}
lapply(tf2, ChangeYears)
Но я получаю следующую ошибку.
Error in .subset2(x, i, exact = exact) : subscript out of bounds
.