0
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列的情況下不起作用,在第4列中我有一個容忍的含糊(有關這方面的建議很受歡迎)。應用功能在列兩個矩陣
我正在做一個循環,但如何避免循環使用應用函數?
vec = logical(ncol(dat1))
for(i in 1:ncol(dat1)) {
vec[i] = all(rowSums(sapply(dat1[,i], grepl, dat2[,i]))>0)
}
使用sapply更換'爲(I ...)'部分:'sapply(1:NcoI位(DAT1),功能(i)所有(rowSums(sapply(DAT1 [,I],grepl, (1),''))> 0))' – rawr
考慮像'setdiff(unique(dat1 [,i]),unique(dat2 [,i]))''? –
如果你真的想用'* apply'函數來做這件事(它不會提供我能想到的優點),你可以轉換爲數據框然後使用'mapply'。 –