在两个矩阵的列上应用函数

时间:2014-05-24 15:40:16

标签: r

dat1 = matrix(c("C", "T", "G", "G", "G", "G", "A", "A"), nrow=2, byrow=F)
dat2 = matrix(c("T", "C", "G", "G", "G/A", "G/A", "G", "A"), nrow=2, byrow=F)

我有这两个矩阵,我想知道矩阵1的第1列的所有元素是否是矩阵2的第1列的元素,依此类推每列。请注意,我没有使用is.element(),因为它在第4列的情况下不起作用,我对此有一定的容忍歧义(欢迎提出这方面的建议)。

我通过循环执行此操作,但如何使用apply函数避免循环?

vec = logical(ncol(dat1))   

for(i in 1:ncol(dat1)) {
    vec[i] = all(rowSums(sapply(dat1[,i], grepl, dat2[,i]))>0)
}

1 个答案:

答案 0 :(得分:0)

我喜欢rawr的解决方案。谢谢!

sapply(1:ncol(dat1), function(i) all(rowSums(sapply(dat1[,i], grepl, dat2[,i]))>0))