【发布时间】:2020-12-06 19:41:19
【问题描述】:
我在使用 R 时遇到了一点问题,我不知道为什么。它告诉我这一行:if(temp > data[[k]][[k2]]) { 的参数长度为 0。这是不是那么大的块:
for(k in 1:length(data)) {
temp <- 0
for(k2 in 3:length(data[[k]])) {
print(data[[k]][[k2]])
if(temp > data[[k]][[k2]]) {
temp <- data[[k]][[k2]]
}
fMax[k] <- temp
k2 <- k2 + 1
}
k <- k + 1
}
数据中的内容示例[[k]][[k2]]:
[1] "3050"
[1] "3051"
[1] "3054"
[1] "3054"
[1] "3052"
[1] "3053"
[1] "3059"
[1] "3059"
[1] "3057"
[1] "3060"
[1] "3063"
[1] "3060"
[1] "3068"
[1] "3067"
[1] "3079"
[1] "3085"
[1] "3094"
[1] "3107"
[1] "3121"
[1] "3135"
[1] "3147"
[1] "3161"
[1] "3200"
[1] "3237"
[1] "3264"
[1] "3274"
[1] "3284"
[1] "3289"
[1] "3292"
[1] "3300"
[1] "3301"
[1] "3303"
[1] "3306"
[1] "3310"
[1] "3312"
[1] "3313"
[1] "3319"
[1] "3314"
[1] "3318"
[1] "3318"
[1] "3320"
[1] "3322"
[1] "3322"
[1] "3322"
[1] "3328"
[1] "3332"
[1] "3338"
[1] "3350"
[1] "3358"
[1] "3378"
[1] "3395"
[1] "3402"
[1] "3875"
[1] "3950"
[1] "3988"
[1] "4018"
[1] "4039"
[1] "4048"
[1] "4057"
[1] "4062"
[1] "4067"
[1] "4076"
[1] "4082"
[1] "4085"
[1] "4092"
[1] "4098"
[1] "4099"
[1] "4101"
[1] "4107"
[1] "4119"
[1] "4139"
[1] "4164"
[1] "4231"
[1] "4347"
[1] "4559"
谢谢 - 山姆
【问题讨论】:
-
我尝试了一点重现,但不能。尝试设置
options(error=recover)以在您遇到错误时将您转储到浏览器中。然后打印k和k2并仔细查看给您带来麻烦的案例。 -
您确实应该发布reproducible example,其中包含可以复制/粘贴到 R 中的示例输入和所需输出。此外,请描述您要执行的操作,而不仅仅是发布损坏的代码;很可能有更好的方法来做到这一点。但是你的代码在
k2上有一个for循环非常奇怪,并且还要手动增加值。 -
好吧,我把它作为一个很好的解释的答案,如果它令人困惑,尽管我不擅长解释,但请告诉我。
-
您不需要手动增加
for循环,因此请去掉x <- x + 1。对于某些k和某些k2可能没有data[[k]][[k2]] -
好评!我敢打赌这就是问题所在(请参阅我对 NULL 的漫谈)。
标签: r