Skip to content
Prev 206259 / 398503 Next

apply a function down each column

Thank you very much! It works now perfectly. I even extended it to be  
able to apply it to the whole dataset:

data<-read.delim("mhc_data.txt", stringsAsFactors=FALSE)

lettermatch <- function(a, b) {
     tb <- merge(as.data.frame(table(strsplit(a, ""))),
as.data.frame(table(strsplit(b, ""))), by="Var1")
     sum(apply(tb[-1], 1, min))
     }

output<-matrix(ncol=(ncol(data)-1),nrow=nrow(data)/2)
sim<-rep(0, nrow(data)/2)

for (y in 2:(ncol(data))) {

	for (x in 1:(nrow(data)/2)) {
  			a <- data[(2*x-1),y]  # odd rows
  			b <- data[(2*x),y]    # even rows
  			sim[x]<-(lettermatch(a,b)) 		
  			}
		output[,y-1]<-sim
}
colnames(output)<-c(names(data[2:length(names(data))]))
rownames(output)<-c(1:(nrow(data)/2))

output

Laetitia



Am 12.01.2010 um 18:31 schrieb Peter Ehlers: