R-Code Loop-Bug

时间:2013-05-28 08:33:01

标签: r loops error-handling

运行我的R脚本时遇到一些问题:

sensoren <- read.csv("C:/..../sensors.csv") 
messung <- read.table("C:/.../os.log")

s1 <- messung$V2
s2 <- messung$V4
s3 <- messung$V6
s4 <- messung$V8

i <- 1; j <- 1
while (i <= nrow(messung)){
+   while (j <= nrow(sensoren)){
+       if (s2[i] == sensoren[j,1] && s3[i] == sensoren[j,2] && s4[i] == sensoren[j,3]){ 
+           print(sensoren[j,5][drop=TRUE]); i <- i + 1; j <- 1;} else {j <- j + 1;}}}  

运行脚本我总是收到错误消息:+ while(j&lt; = nrow(sensoren)){:   一元运算符的无效参数

希望有人可以帮助我,谢谢!!

编辑:

我改变了我的代码,现在看起来像这样:

while (i <= nrow(messung)){
+   while (j <= nrow(sensoren)){
+       if (c(s2[i],s3[i],s4[i]) == c(sensoren[j,1], sensoren[j,2], sensoren[j,3])){ 
+           print(sensoren[j,5][drop=TRUE]); i <- i + 1; j <- 1;} else {j <- j + 1;}}}  

但仍然是同样的错误信息......

1 个答案:

答案 0 :(得分:0)

看起来nrow(sensoren)返回NULL,当nrow()的参数不是矩阵或数据帧时,nrow()会返回NULL。检查文件是否按预期读入。

另外,我很感激你没有问过这个问题,但是使用嵌套循环并不是一种非常“R”的做法,因为在这些操作中R很慢。您可能想要阅读R中的merge(),apply()和向量化。