Я не мог понять, где может быть проблема или как предложить вам пример данных: у меня довольно длинный скрипт, поэтому я разделяю его на части. Вторая часть о слиянии столбцов. Я измерил прирост из бука, непосредственно измерив прирост, который они имели за последние 3 года. Для елей это было проще, я мог просто измерить высоту этого летнего наконечника, а затем высоту завитков. Как и высота этого года - высота следующих оборотов - это приращение лет. Чтобы сформировать общий столбец с приращением I (а затем переименовать его), я сделал цикл:
for (i in 1:nrow(df)) {
if(df$Species[i]=="Fi"){
print(i)
df$`Length Beech 2019 [cm]`[i] <- df$`Height [cm] 2019`[i] - df$`Höhe Spruce 2018 [cm]`[i]
}
}
Эта часть работает без сбоев в том же сценарии. Но если я скопирую всю часть перестановки моего фрейма данных в другой R-скрипт,
> source("2 RedesignDF.R")
[1] 2
Error in df$`Length Beech 2019 [cm]`[i] <- df$`Height [cm] 2019`[i] - :
replacement has length zero
я получу эту ошибку. Первые 10 значений:
> str(df$`Length Beech 2019 [cm]`)
num [1:113] 25 NA NA 25 23 NA 14.5 19.5 NA NA ...
> str(df$`Height [cm] 2019`)
num [1:113] 302 186 188 306 258 ...
> str(df$`Höhe Spruce 2018 [cm]`)
num [1:113] NA 176 178 NA NA ...
Мое первое дерево - бук, поэтому высота первой ели пуста. Я предполагаю, что это источник моей ошибки, но мое замешательство связано с тем, что это не было проблемой при запуске его в том же скрипте.
Я сделал несколько примеров данных:
Species <- c("Bu", "Fi", "Fi", "Bu", "Bu", "Fi", "Bu", "Bu", "Fi", "Fi")
`Length Beech 2019 [cm]` <- c(15.5, NA, NA, 23, 20, NA, 14, 18.5, NA, NA)
`Height [cm] 2019` <- c(298, 179.5, 306.5, 306.5, 258.5, 188.5, 186, 301.5, 244, 192)
`Höhe Spruce 2018 [cm]` <- c(NA, 169.5, 271, NA, NA, 170, NA, NA, 233.5, 188)
df <- data.frame(Species, `Length Beech 2019 [cm]`, `Height [cm] 2019`, `Höhe Spruce 2018 [cm]`)
Если бы кто-то мог объяснить мне, почему это происходит, я был бы очень рад.
Спасибо, вперед!