這裏是數據:R如果語句滿足錯誤:變量是長度爲零
1:
30878
2647871
1283744
2488120
317050
1904905
1989766
14756
1027056
1149588
1394012
1406595
2529547
1682104
2625019
2603381
1774623
470861
712610
1772839
1059319
2380848
548064
10:
1952305
1531863
1000:
2326571
977808
1010534
1861759
79755
98259
1960212
97460
2623506
2409123
...
隨後數「:」意味着它是一個movieID,然後將下面的幾行的customerID,我想寫一個循環來檢查數據是否包含「:」,這裏是我試過的代碼:
for (i in 1:length(line)){
#print(line[i])
if(grep(':', line[i])==1){
movieID<-as.integer(substr(line[i],1,nchar(line[i])-1) )
next
}
else{
customerID<-as.integer(line[i])
#do something
}
}
當我運行此代碼,發生錯誤,錯誤的是:變量是長度爲零 我搜索的這個錯誤,然後我改變了if語句:
if(!is.na(line[i]) && nchar(line[i])>1 && grep(':', line[i])==1)
還有一個錯誤:缺少值,其中TRUE/FALSE需要
我解決不了。 這是我的代碼:它看起來像發生在else語句錯誤
[1] "1:"
Error in if (grep(":", testData[i]) == 1) { : argument is of length zero
:
for (i in 1:27){
#print(testData[i])
if(grep(':', testData[i])==1){
movieID<-as.integer(substr(testData[i],1,nchar(testData[i])-1) )
print(testData[i])
next
}else{
customerID<-as.integer(testData[i])
print(movieID)
print(customerID)
#print(subset.data.frame(mydata[[movieID]],mydata[[movieID]]$customerID==customerID))
}
}
這裏是放出來和錯誤。
你能添加打印語句以嘗試查看代碼失敗的哪一行?邏輯看起來對我來說是正確的(我在本地測試每一塊)。也許你的文件有一些不好的數據。也許這是因爲EOF情況而失敗? –
我有更新的問題,我敢肯定數據是正確的。 – cloudiyang