这里是数据: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