R - добавить пустые столбцы в dataframe с указанными именами из вектора
У меня есть dataframe, df, с уже несколькими столбцами данных. У меня есть вектор, namevector, полный строк. Мне нужны пустые столбцы, добавленные в df, с именами столбцов из namevector.
Я пытаюсь добавить столбцы с этим циклом for, итерации по каждой строке в namevector.
for (i in length(namevector)) {
df[, i] <- NA
}
но я остался с этой ошибкой.
Ошибка в [<-.data.frame
(*tmp*
, i, value = NA): новые столбцы оставят дыры после существующих столбцов
В качестве альтернативы, я подумал о создании пустого фрейма с правильными именами, а затем объединил два файла данных, но не уверен, как это сделать.
Как я могу это решить?
Ответы
Ответ 1
Проблема с вашим кодом находится в строке:
for(i in length(namevector))
Вам нужно спросить себя: что такое length(namevector)
? Это один номер. Итак, вы говорите:
for(i in 11)
df[,i] <- NA
Или проще:
df[,11] <- NA
Это, почему вы получаете сообщение об ошибке. Вы хотите:
for(i in namevector)
df[,i] <- NA
Или проще:
df[,namevector] <- NA
Ответ 2
set.seed(1)
example <- data.frame(col1 = rnorm(10, 0, 1), col2 = rnorm(10, 2, 3))
namevector <- c("col3", "col4")
example[ , namevector] <- NA
example
# col1 col2 col3 col4
# 1 -0.6264538 6.5353435 NA NA
# 2 0.1836433 3.1695297 NA NA
# 3 -0.8356286 0.1362783 NA NA
# 4 1.5952808 -4.6440997 NA NA
# 5 0.3295078 5.3747928 NA NA
# 6 -0.8204684 1.8651992 NA NA
# 7 0.4874291 1.9514292 NA NA
# 8 0.7383247 4.8315086 NA NA
# 9 0.5757814 4.4636636 NA NA
# 10 -0.3053884 3.7817040 NA NA
Ответ 3
Просто давайте, как показано ниже, для меня
dataframe [, "newName" ] < - NA
Обязательно добавьте "" для новой строки имени.
Ответ 4
Возможно
df <- do.call("cbind", list(df, rep(list(NA),length(namevector))))
colnames(df)[-1*(1:(ncol(df) - length(namevector)))] <- namevector