我有兩個data.frame對象「x」和「ANS1」等於列,有500列在「X」和「ANS1」 7我怎樣才能找到「x列的名稱',這等於'ans1'的列嗎?查找data.frames
2
A
回答
1
隨着%in%
:
names(x) %in% names(ans1)
更多細節見?match
。
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
這表明在data.frame x
列bb
數據等於數據在cc
列data.frame ans1
。
爲了獲得僅相匹配,
unlist(lapply(myMatches, function(x) which(x)))
# bb.cc
# 2
再次,從x
在bb
列中的數據在ans1
1
這個怎麼樣都等同於cc
列中的數據:
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"
相關問題
- 1. 操縱Data.Frames
- 2. 初始化data.frames()
- 3. rbind.fill large data.frames
- 4. rbind data.frames without names
- 5. 替代expand.grid爲data.frames
- 6. 提取多個data.frames
- 7. 用於data.frames然後concat data.frames的評估列表字符串
- 8. 將Data.frames的列表名稱分配給R中的data.frames列表中的其他(Spatial)data.frames R
- 9. 比較兩個data.frames找到data.frame 1具有在選定的列
- 10. R合併data.frames asof加入
- 11. 使用lapply超過data.frames
- 12. 合併data.frames與重複
- 13. R:使用apply兩個data.frames
- 14. 合併data.frames導致錯誤
- 15. R:ifelse語句:比較data.frames
- 16. 無法正確匹配data.frames
- 17. 合併了很多data.frames
- 18. 如何在data.frames存儲在一個列表中時將列添加到data.frames中
- 19. 列表data.frames的列出XTS的對象
- 20. 如何重塑data.frames在列表中?
- 21. 合併data.frames導致match.names錯誤
- 22. 按列名合併3個data.frames
- 23. R:轉換data.frames的名單光柵
- 24. expand.grid函數用於R中的data.frames
- 25. R data.frames中的SQL屬性FROM和WHERE
- 26. ř子集data.frame與來自其它data.frames
- 27. data.frames忽略一些值的總和
- 28. 應用功能,從包含許多data.frames
- 29. 用行指標Rbind多個data.frames
- 30. 取代R中data.frames(文本挖掘)
謝謝,我犯了這樣的這(在%ANS1 X%) – 2012-04-11 13:04:06
您可以使用相交(這是一個WR在比賽衝擊片雷管) – 2012-04-11 13:20:22
@大衛,不幸的是,你的這種解決方案的修改不會考慮在列中的值的奧德。如果訂單很重要,請重新考慮使用此解決方案。 – BenBarnes 2012-04-11 13:21:53