[R] create list of names where two df contain == values
Rob Griffin
robgriffin247 at hotmail.com
Wed Nov 16 14:03:30 CET 2011
Hello again... sorry to be posting yet again, but I hadn't anticipated this
problem.
I am trying to now put the names found in one column in data frame 1 (lets
call it df.1[,1]) in to a list from the rows where the values in df.1[,2]
match values in a column of another dataframe (df.2[3])
I tried to write this function so that it put the list of names (called
Iffy) where the 2 criteria (df.1[141] and df.2[21]) matched but I think its
too complex for a beginner R-enthusiast
ify<-function(x,y,a,b,c) if(x[[,a]]==y[[,b]]) {list(x[[,c]])} else {NULL}
Iffy<-apply( df.1, 1, FUN=ify, x=df.1, y=df.2, a=2, b=3, c=1 )
But this didn't work... Error in FUN(newX[, i], ...) : unused argument(s)
(newX[, i])
Here is a dataset that replicates the problem, you'll notice the "h"
criteria values are different between the two dataframes and therefore it
would produce a list of the 9 letters where the two criteria columns
matched (a,b,c,d,e,f,g,i,j):
df.1<-data.frame(rep(letters[1:10]))
colnames(df.1)[1]<-("Letters")
set.seed(1)
df.1$numb1<-rnorm(10,1,1)
df.1$extra.col<-c(1,2,3,4,5,6,7,8,9,10)
df.1$id<-c("CG234","CG232","CG441","CG128","CG125","CG182","CG982","CG541","CG282","CG154")
df.1
df.2<-data.frame(rep(letters[1:10]))
colnames(df.2)[1]<-("Letters")
set.seed(1)
df.2$extra.col<-c(1,2,3,4,5,6,7,8,9,10)
df.2$numb1<-rnorm(10,1,1)
df.2$id<-c("CG234","CG232","CG441","CG128","CG125","CG182","CG982","CG541","CG282","CG154")
df.2[8,3]<-12
df.1
df.2
Your patience is much appreciated,
Rob
More information about the R-help
mailing list