1
已經多次聲明dplyr會丟棄rownames,現在版本0.3已經這樣做了。如何在使用dplyr時根據行名替換lookup
我經常用行名稱不同的標識符之間轉換保持在這樣的數據幀:
test <- data.frame(Greek = c("Alpha", "Beta", "Gamma"), Letters = LETTERS[1:3])
rownames(test) <-test$Letters
lookup <- c("C", "B")
test[lookup, "Greek"]
[1] Gamma Beta
Levels: Alpha Beta Gamma
由於缺乏rownames這個現在失敗dplyr
library(dplyr)
test <- tbl_df(data.frame(Greek = c("Alpha", "Beta", "Gamma"), Letters = LETTERS[1:3]))
rownames(test) <-test$Letters
lookup <- c("C", "B")
test[lookup, "Greek"]
Source: local data frame [2 x 1]
Greek
1 NA
2 NA
我我嘗試過使用filter()和select(),但找不到解決方案,它保留了查找的順序。
dplyr-ic版本並不是我稱之爲漂亮的代碼,但兩個版本似乎都很好。謝謝! – user2464290 2014-10-09 15:03:34
或者更好,使用'left_join()'或'inner_join()' – hadley 2014-10-09 22:02:39
@hadley'inner_join'似乎重新排序,但是'left_join'完成了OP所需的操作。 – James 2014-10-10 10:22:40