[R] grepping with a variable trouble

arun smartpink111 at yahoo.com
Fri Jan 17 00:45:16 CET 2014


Hi,
It's not clear about the pattern in your rownames.
In the for() loop, I guess you need rownames(df) instead of df.

Using an example dataset (Here the rownames may be different)
set.seed(59)
 x <- as.data.frame(matrix(rnorm(110),ncol=2))

set.seed(24)
row.names(x) <- paste0(row.names(x),Reduce(`paste0`,lapply(1:2,function(x) sample(letters,55,replace=TRUE))))

set.seed(435)
df <- as.data.frame(matrix(sample(200,300*20,replace=TRUE),ncol=20))
set.seed(34)
row.names(df) <- paste0(sample(1:55,300,replace=TRUE),Reduce(`paste0`,lapply(1:2,function(x) sample(letters,300,replace=TRUE))))
 gl1 <- sapply(rownames(x),function(i) grep(paste0(gsub("\\d+","",i),"$"),rownames(df)))
 gl1[2]
#$`2fl`
#[1] 128
rownames(df[128,])
#[1] "31fl"

A.K.




Hi, I'm having trouble using grep with a variable. When I do this it works fine: 

grep("^hb$", rownames(df))
[1] 9359 

but what I really want to do is use the rownames of 1 data frame
 (x) to extract the position of that same rowname in a larger data frame
 (df). How can I do this for say all of the rownames in x? The positions
 should be stored in a variable called g. 

dim(x)
[1] 55  2 

dim(df)
[1] 13000    19 

I've tried this but it does not seem to work. 

for(i in rownames(x)){ 
    g <- grep(paste("^",i,"$",sep=""), df) 
} 

any ideas? 




More information about the R-help mailing list