2013-05-28 5 views
0

У меня есть небольшая проблема с работает мой R-скрипт:R-Code Loop-Bug

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;}}} 

Запуск сценария я всегда получаю сообщения об ошибке: Ошибка в +, а (J < = nrow (Sensoren)) {: неверный аргумент унарного оператора

Надеюсь, кто-то может мне помочь, спасибо!

Edit:

Я изменил код, и это похоже, что теперь:

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;}}} 

Но все же самое сообщение об ошибке ...

+3

Возможно, убедитесь, что ваш набор данных sensoren был успешно загружен. И вы должны попытаться векторизовать свой код. – juba

ответ

0

Похоже nrow (Sensoren) возвращает NULL , который nrow() делает, когда его аргумент не является матрицей или фреймом данных. Убедитесь, что файл прочитан как ожидалось.

Кроме того, я ценю, что вы не спрашивали об этом, но использование вложенных циклов - это не очень «R» способ делать что-то, потому что R мучительно медленно в этих операциях. Вы можете прочитать на merge(), apply() и vectorization в R.

+0

Хмм я не думаю, что это так, после прочтения в скрипте nrow (sensoren) возвращает мне значение 15, которое является правильным. Но я последую за советом и дам себе лекцию о векторизации, хотя я не знаю, решит ли она мою проблему. – user2351938

+0

Может быть, вы действительно пишете «+ while», а не «while»? В сообщении об ошибке говорится «+ while», что говорит об этом ... – msp

+0

oh man, вы правы, не знаете, почему, но это реально будет прочитано компилятором «+ while», после того, как эта строка будет вставлена ​​выше он работает без ошибок .... -.- – user2351938

Смежные вопросы