鉴于以下数据:
questionTagMatrix <- data.frame( question1=c("0","1","0"), question2=c("1","0", "0"), question3=c("0","1","0"), question4=c("0","1","1") )
rownames(questionTagMatrix)[1] <- "php"
rownames(questionTagMatrix)[2] <- "html"
rownames(questionTagMatrix)[3] <- "javascript"
newQuestion <- data.frame( newquestion=c("0","1","0") )
rownames(newQuestion)[1] <- "php"
rownames(newQuestion)[2] <- "html"
rownames(newQuestion)[3] <- "javascript"如何找到questionTagMatrix的所有列都等于newQuestion
发布于 2013-11-04 14:20:04
您可以使用apply查找以下列:
questionTagMatrix[apply(questionTagMatrix, 2, function(x)
all(x == as.matrix(newQuestion)))]将questionTagMatrix的所有列与newQuestion进行了比较。结果:
# question1 question3
# php 0 0
# html 1 1
# javascript 0 0发布于 2013-11-04 14:22:34
基于colSums的矢量化解决方案
questionTagMatrix[,colSums(questionTagMatrix == newQuestion)
==nrow(questionTagMatrix)]
question1 question3
php 0 0
html 1 1
javascript 0 0PS newQuestion是这里的一个向量:
newQuestion =c("0","1","0") ## not data.frame( newquestion=c("0","1","0") )要只得到问题的名字:
names(questionTagMatrix)[colSums(questionTagMatrix == newQuestion)
+ ==nrow(questionTagMatrix)]
[1] "question1" "question3"https://stackoverflow.com/questions/19769550
复制相似问题