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)
}
答案 0 :(得分:0)
我喜欢rawr的解决方案。谢谢!
sapply(1:ncol(dat1), function(i) all(rowSums(sapply(dat1[,i], grepl, dat2[,i]))>0))