我不知道问题可能出在哪里,也不知道如何为您提供一些示例数据:我有一个相当长的脚本,所以我将其分成几部分。第二部分是关于列的合并。我通过直接测量他们在过去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]`)如果有人能给我解释一下,为什么会这样,我会很高兴的。
谢谢你的支持!
发布于 2019-10-01 17:09:35
我执行了您的代码,发现它甚至不能在相同的脚本中产生输出。您可以看到,在执行代码之后,您给出的输出与输入是相同的。
我已经纠正了你的代码,它正在产生输出。您也可以在另一个r脚本中尝试它。
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]
}
}发布于 2019-11-05 18:05:36
我找到了答案。Source不能与ä、ö、ü和?一起使用。因此,要么必须删除所有这些参数,要么必须指定编码。
source("2 RedesignDF.R", encoding = "UTF-8")无论如何,感谢大家的帮助!
https://stackoverflow.com/questions/58181003
复制相似问题