我有两个 data.frame 对象“x”和“ans1”,“x”中有 500 列,“ans1”中有 7 个列如何找到“x”中的列名,它们等于“ans1”中的列?
问问题
1137 次
3 回答
2
可以identical()
与digest
包一起使用:
library(digest)
x <- data.frame(aa = c("s", "d", "f"), bb = 1:3)
ans1 <- data.frame(bb = c("d", "s", "z"), cc = 1:3)
(myMatches<-lapply(x, function(myX) sapply(ans1,
function(y) identical(digest(y), digest(myX))))
)
# $aa
# bb cc
# FALSE FALSE
# $bb
# bb cc
# FALSE TRUE
这表明bb
data.frame中列中x
的数据等于 data.frame 中列cc
中的数据ans1
。
仅获取匹配项,
unlist(lapply(myMatches, function(x) which(x)))
# bb.cc
# 2
同样,bb
from列中的数据与 in 列中x
的数据相同cc
ans1
于 2012-04-11T13:15:03.693 回答
1
与%in%
:
names(x) %in% names(ans1)
有关?match
更多详细信息,请参阅。
于 2012-04-11T12:52:17.797 回答
1
这个怎么样:
mtcarsSub <- mtcars[c(1,4,7)]
names(mtcarsSub) <- letters[1:3]
matches <- sapply(mtcarsSub,function(x) sapply(mtcars,identical,x))
matches
a b c
mpg TRUE FALSE FALSE
cyl FALSE FALSE FALSE
disp FALSE FALSE FALSE
hp FALSE TRUE FALSE
drat FALSE FALSE FALSE
wt FALSE FALSE FALSE
qsec FALSE FALSE TRUE
vs FALSE FALSE FALSE
am FALSE FALSE FALSE
gear FALSE FALSE FALSE
carb FALSE FALSE FALSE
names(mtcars)[apply(matches,2,which)]
[1] "mpg" "hp" "qsec"
于 2012-04-11T13:16:55.563 回答