Hi everyone
I am trying to use grep in a for loop to compare a string value. It works
if I use
the actual index value but when I use the for loop index, it doesn't work.
Any suggestions plz.
Here is the code:
data <- read.table(file="Sigmoid.csv", head=FALSE,
sep=",");
c1 <- data$V1
c2 <- data$V2
c3 <- data$V3
c1data <- data.frame(c1);
c2data <- data.frame(c2);
c3data <- data.frame(c3);
#this works
p <-
grep("QueryItem",c1data["147",],value=FALSE,fixed=FALSE)
print(p) # print 1
#doesn't work
i<-147
p1 <-
grep("QueryItem",c1data["i",],value=FALSE,fixed=FALSE)
print(p1) # prints 0
for(i in 137:270) {
print(i)
p <-
grep("QueryItem",c1data["i",],value=FALSE,fixed=FALSE)
p2 <- p
print(p2)
if(length(p)>0) { print(p) }
}
Hi everyone
I am trying to use grep in a for loop to compare a string value. It works
if I use the actual index value but when I use the for loop index, it
doesn''t work. Any suggestions plz.
Here is the code:
data <- read.table(file="Sigmoid.csv", head=FALSE,
sep=",");
c1 <- data$V1
c2 <- data$V2
c3 <- data$V3
c1data <- data.frame(c1);
c2data <- data.frame(c2);
c3data <- data.frame(c3);
#this works
p <-
grep("QueryItem",c1data["147",],value=FALSE,fixed=FALSE)
print(p) # print 1
#doesn''t work
i<-147
p1 <-
grep("QueryItem",c1data["i",],value=FALSE,fixed=FALSE)
print(p1) # prints 0
for(i in 137:270) {
print(i)
p <-
grep("QueryItem",c1data["i",],value=FALSE,fixed=FALSE)
p2 <- p
print(p2)
if(length(p)>0) { print(p) }
}
[[alternative HTML version deleted]]
Thanks Phil.
That worked.
The apply(..) commands gives me a single 1/0 output for each column which
has the query item or not.
But I am looking to find the index i from the loop to extract that
particular value for plotting
I'll try to improve the data.frame part; I was not able to access the rows
with data (just started R), so I created individual frames for data
Cheers
Mohan
-----Original Message-----
From: Phil Spector [mailto:spector at stat.berkeley.edu]
Sent: Wednesday, March 11, 2009 10:46 PM
To: Mohan Singh
Subject: Re: [R] R-help: grep in for loop using index - doesn't work
Mohan -
"i" is the literal character i. i is the variable called
i. In this case, you want the variable, i.e. i:
p1 <- grep("QueryItem",c1data[i,],value=FALSE,fixed=FALSE)
I might also mention that creating a separate data frame for each
column of your data is not really a good idea. I believe that you're
looking for a solution like
apply(data,2,grep,"Query Item")
but it's hard to tell. You might want to run that command
and see if what you want is in the output.
- Phil Spector
Statistical Computing Facility
Department of Statistics
UC Berkeley
spector at stat.berkeley.edu
On Wed, 11 Mar 2009, Mohan Singh wrote:
> Hi everyone
>
>
>
> I am trying to use grep in a for loop to compare a string value. It works
> if I use the actual index value but when I use the for loop index, it
> doesn't work. Any suggestions plz.
>
>
>
> Here is the code:
>
>
>
> data <- read.table(file="Sigmoid.csv", head=FALSE,
sep=",");
>
>
>
> c1 <- data$V1
>
> c2 <- data$V2
>
> c3 <- data$V3
>
>
>
> c1data <- data.frame(c1);
>
> c2data <- data.frame(c2);
>
> c3data <- data.frame(c3);
>
>
>
> #this works
>
> p <-
grep("QueryItem",c1data["147",],value=FALSE,fixed=FALSE)
>
> print(p) # print 1
>
>
>
> #doesn't work
>
> i<-147
>
> p1 <-
grep("QueryItem",c1data["i",],value=FALSE,fixed=FALSE)
>
> print(p1) # prints 0
>
>
>
> for(i in 137:270) {
>
> print(i)
>
> p <-
grep("QueryItem",c1data["i",],value=FALSE,fixed=FALSE)
>
> p2 <- p
>
> print(p2)
>
> if(length(p)>0) { print(p) }
>
> }
>
>
>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html> and provide commented, minimal, self-contained, reproducible code.
>
Thanks very much Phil :)
Worked prefect
-----Original Message-----
From: Phil Spector [mailto:spector at stat.berkeley.edu]
Sent: Wednesday, March 11, 2009 11:14 PM
To: Mohan Singh
Subject: Re: [R] R-help: grep in for loop using index - doesn't work
Mohan -
Sorry about that. I need to check what I write
more carefully when I don't have any data available
to test it.
I think what you want is
apply(data,2,grep,pattern='Query Item')
It will return a list with one element for each column, showing
the positiions where 'Query Item' was found.
- Phil
On Wed, 11 Mar 2009, Mohan Singh wrote:
> Thanks Phil.
>
> That worked.
>
> The apply(..) commands gives me a single 1/0 output for each column which
> has the query item or not.
>
> But I am looking to find the index i from the loop to extract that
> particular value for plotting
>
> I'll try to improve the data.frame part; I was not able to access the
rows
> with data (just started R), so I created individual frames for data
>
> Cheers
> Mohan
>
>
> -----Original Message-----
> From: Phil Spector [mailto:spector at stat.berkeley.edu]
> Sent: Wednesday, March 11, 2009 10:46 PM
> To: Mohan Singh
> Subject: Re: [R] R-help: grep in for loop using index - doesn't work
>
> Mohan -
> "i" is the literal character i. i is the variable called
> i. In this case, you want the variable, i.e. i:
>
> p1 <- grep("QueryItem",c1data[i,],value=FALSE,fixed=FALSE)
>
> I might also mention that creating a separate data frame for each
> column of your data is not really a good idea. I believe that you're
> looking for a solution like
>
> apply(data,2,grep,"Query Item")
>
> but it's hard to tell. You might want to run that command
> and see if what you want is in the output.
>
> - Phil Spector
> Statistical Computing Facility
> Department of Statistics
> UC Berkeley
> spector at stat.berkeley.edu
>
>
>
>
>
> On Wed, 11 Mar 2009, Mohan Singh wrote:
>
>> Hi everyone
>>
>>
>>
>> I am trying to use grep in a for loop to compare a string value. It
works>> if I use the actual index value but when I use the for loop index, it
>> doesn't work. Any suggestions plz.
>>
>>
>>
>> Here is the code:
>>
>>
>>
>> data <- read.table(file="Sigmoid.csv", head=FALSE,
sep=",");
>>
>>
>>
>> c1 <- data$V1
>>
>> c2 <- data$V2
>>
>> c3 <- data$V3
>>
>>
>>
>> c1data <- data.frame(c1);
>>
>> c2data <- data.frame(c2);
>>
>> c3data <- data.frame(c3);
>>
>>
>>
>> #this works
>>
>> p <-
grep("QueryItem",c1data["147",],value=FALSE,fixed=FALSE)
>>
>> print(p) # print 1
>>
>>
>>
>> #doesn't work
>>
>> i<-147
>>
>> p1 <-
grep("QueryItem",c1data["i",],value=FALSE,fixed=FALSE)
>>
>> print(p1) # prints 0
>>
>>
>>
>> for(i in 137:270) {
>>
>> print(i)
>>
>> p <-
grep("QueryItem",c1data["i",],value=FALSE,fixed=FALSE)
>>
>> p2 <- p
>>
>> print(p2)
>>
>> if(length(p)>0) { print(p) }
>>
>> }
>>
>>
>>
>>
>> [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html> and provide commented, minimal, self-contained, reproducible code.
>
I think you have to convert the loop value to character; it is not
recognized inside the quotes:
#doesn't work, but now it should
i<-147
p1 <-
grep("QueryItem",c1data[as.character(i),],value=FALSE,fixed=FALSE)
print(p1) # prints 0
Same thing goes for the 'for' loop:
for(i in 137:270) {
print(i)
p <-
grep("QueryItem",c1data[as.character(i),],value=FALSE,fixed=FALSE)
p2 <- p
print(p2)
if(length(p)>0) { print(p) }
}
On Wed, Mar 11, 2009 at 6:29 PM, Mohan Singh <Mohan.Singh at ucd.ie>
wrote:> Hi everyone
>
> ?I am trying to use grep in a for loop to compare a string value. It works
> if I use
> the actual index value but when I use the for loop index, it doesn't
work.
> Any suggestions plz.
>
> Here is the code:
>
> data <- read.table(file="Sigmoid.csv", head=FALSE,
sep=",");
>
> c1 <- data$V1
> c2 <- data$V2
> c3 <- data$V3
>
> c1data <- data.frame(c1);
> c2data <- data.frame(c2);
> c3data <- data.frame(c3);
>
> #this works
> p <-
grep("QueryItem",c1data["147",],value=FALSE,fixed=FALSE)
> print(p) # print 1
>
> #doesn't work
> i<-147
> p1 <-
grep("QueryItem",c1data["i",],value=FALSE,fixed=FALSE)
> print(p1) # prints 0
>
> for(i in 137:270) {
> ?print(i)
> ?p <-
grep("QueryItem",c1data["i",],value=FALSE,fixed=FALSE)
> ?p2 <- p
> ?print(p2)
> ?if(length(p)>0) { print(p) }
> }
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
--
Jim Holtman
Cincinnati, OH
+1 513 646 9390
What is the problem that you are trying to solve?