Dear R-users, For a data frame (say in this example X) I want to look up the corresponding value in a 'look-up data frame' (in this example Y). The for-loop works but is very time-consuming because 'X' in reality is very big. Therefore I would like to have a solution with apply. However, I do not succeed. Any suggestions?
Thanks in advance, Hanneke c1=c('a','a','b') c2=c('j','k','k') V1=c('a','a','a','a','b','b','b','b')) V2=c('i','j','k','l','i','j','k','l') V3=c(4,3,2,1,8,5,2,-1) X=NULL X$c1=c1 X$c2=c2 X=as.data.frame(X) Y=NULL Y$V1=V1 Y$V2=V2 Y$V3=V3 Y=as.data.frame(Y) result=NULL for (i in 1:dim(X)[1]) { result=rbind(result, Y$V3[which(Y$V1==as.character(X[i,]$c1) & Y$V2==as.character(X[i,]$c2))]) } ####### which.search=function(X,Y,c1,c2,V1,V2,V3) Y$V3[which(Y$V1==as.character(X$c1) & Y$V2==as.character(X$c2))] apply(X,1,which.search,X=X,Y=Y,c1='c1',c2='c2',V1='V1',V2='V2',V3='V3') ### > sessionInfo() R version 2.5.1 (2007-06-27) i386-pc-mingw32 locale: LC_COLLATE=Dutch_Netherlands.1252;LC_CTYPE=Dutch_Netherlands.1252;LC_MONETARY=Dutch_Netherlands.1252;LC_NUMERIC=C;LC_TIME=Dutch_Netherlands.1252 attached base packages: [1] "stats" "graphics" "grDevices" "utils" "datasets" "methods" "base" ______________________________________________ R-help@stat.math.ethz.ch 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.