if()参数中的错误在R中的长度为零

时间:2014-11-19 11:00:27

标签: r if-statement arguments zero

这是代码

`

  

区域< - " ARLINGTON"

     

数据< -read.csv(" city_markets.csv&#34)

     

for(i in 1:length(data [[1]])){

     

如果(grep的(区域,as.character(数据[[3]] [I]),ignore.case = TRUE)== 1){

for(j in 1:length(data)){
    write(data[[j]][i],"analyzed.txt",append=TRUE)
  }   
}
     

}   `

现在我在这里尝试做的是访问csv的第3列(第3列)并将其与指定的区域进行比较!我一直收到错误

  

if(grep(region,as.character(data [[3]] [i]),ignore.case = TRUE)==:

出错      

参数长度为零

2 个答案:

答案 0 :(得分:3)

详细说明我的评论和@Adii_:

当你使用grep时,结果是满足条件的元素的“位置”......如果没有匹配则为“无”(因此错误信息)。

使用grepl,您将获得TRUE或FALSE,您可以在if声明中使用。

对于length(grep(...)),如果没有匹配,则结果为0,对应FALSE语句的if或正整数({{1}在你的情况下,因为你只测试一个元素),如果有匹配,则对应1语句的TRUE

答案 1 :(得分:0)

这解决了我的问题:

region<-"ARLINGTON"

data<-read.csv("city_markets.csv")

for(i in 1:length(data[[1]])){

a<-as.character(data[[3]][i])

if(grepl(region,a,ignore.case=TRUE)){
for(j in 1:length(data)){
    write(data[[j]][i],"analyzed.txt",append=TRUE)
  }   
}

} `