при условии, что ваши данные выглядят следующим образом:
options(stringsAsFactors = FALSE)
df1 <- read.table(text = "colA colB
1 NA
2 3
3 4
4 NA",header=1)
Один вкладыш решает вашу проблему, используя ifelse
:
df1$newColumn <- ifelse(is.na(df1$colB), df1$colA, df1$colB)
, и ваша ошибка заключается в том, что вам нужно проиндексироватьзамены, поэтому вместо data$newColumn <- data$colA
вы должны иметь data$newColumn[i] <- data$colA[i]
и то же самое в операторе else.Но всегда лучше использовать векторизованные функции, такие как ifelse
.