-1

This is the code

`

region<-"ARLINGTON"

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

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

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

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

} `

now what i'm trying to do here is I'm accessing the csv's column(3rd one) and comparing it with the region specified! i keep getting the error

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

argument is of length zero

Parul Chauhan
  • 126
  • 2
  • 7
  • 20

2 Answers2

3

To detail a bit my comment and @Adii_ 's :

when you use grep, the result is the "position" of elements that fulfill the condition... so "nothing" if there is no match (hence the error message).

Using grepl, you'll get TRUE or FALSE, which you can use in your if statement.

As for length(grep(...)), the result will be 0 if there is no match, corresponding to FALSE for the if statement, or a positive integer (1 in your case because you're testing only one element), if there is a match, corresponding to TRUE for the if statement.

Cath
  • 23,906
  • 5
  • 52
  • 86
  • thanx CathG for the suggestion of using grepl. but for some reason, i found the solution by removing indexes from my grepl(or grep) command. – Parul Chauhan Dec 04 '14 at 15:51
0

this solved my problem:

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

} `
Parul Chauhan
  • 126
  • 2
  • 7
  • 20