2

2つのdata.frameオブジェクト「x」と「ans1」があります。「x」には500列、「ans1」には7列あります。「x」の列の名前を見つけるにはどうすればよいですか。「ans1」の列と同じです。 ?

4

3 に答える 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の列のデータがdata.frameのx列のデータと等しいことを示しています。ccans1

一致のみを取得するには、

unlist(lapply(myMatches, function(x) which(x)))
# bb.cc 
# 2

繰り返しますが、bbfromの列のデータは、の列のxデータと同じです。ccans1

于 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 に答える