[英]Compare dataframes and vectors in R
我在 R 中有一個巨大的數據框,我想將前四列與一個向量進行比較。 這是我的數據框:
> head(MyTable)
config.1. config.2. config.3. config.4. kernel orden.1. orden.2. orden.3. orden.4.
1 gen(1) 2*gen(2)+2*gen(1) 3*gen(2)+2*gen(1) 2*gen(2)+gen(1) gen(4)-2*gen(3)+2*gen(2)-gen(1) 1 2 3 4
2 gen(1) 4*gen(2)+2*gen(1) 3*gen(2)+2*gen(1) 2*gen(2)+gen(1) gen(4)+2*gen(3)-2*gen(2)-gen(1) 1 3 2 4
3 gen(1) 6*gen(2)+2*gen(1) 3*gen(2)+2*gen(1) 2*gen(2)+gen(1) 3*gen(4)+2*gen(3)-2*gen(2)-3*gen(1) 3 1 4 2
4 gen(1) 7*gen(2)+2*gen(1) 3*gen(2)+2*gen(1) 2*gen(2)+gen(1) 2*gen(4)+gen(3)-gen(2)-2*gen(1) 3 1 4 2
5 gen(1) 8*gen(2)+2*gen(1) 3*gen(2)+2*gen(1) 2*gen(2)+gen(1) 5*gen(4)+2*gen(3)-2*gen(2)-5*gen(1) 3 1 4 2
6 gen(1) 9*gen(2)+2*gen(1) 3*gen(2)+2*gen(1) 2*gen(2)+gen(1) 3*gen(4)+gen(3)-gen(2)-3*gen(1) 3 1 4 2
第一列是字符串。 我想將每一行的前四列與向量進行比較:
> MyConfig
[1] "gen(1)" "gen(2)" "3*gen(2)+2*gen(1)" "2*gen(2)+gen(1)"
數據框的每一行都有三列,等於向量中的列,一列不同。 我需要一個具有 TRUE 或 FALSE 值的新數據框。
我嘗試使用 == 將子矩陣 MyTable[,1:4] 與向量 MyConfig 進行比較,我得到:
> head(MyTable[,1:4]==MyConfig)
config.1. config.2. config.3. config.4.
[1,] TRUE FALSE FALSE FALSE
[2,] FALSE FALSE FALSE FALSE
[3,] FALSE FALSE TRUE FALSE
[4,] FALSE FALSE FALSE TRUE
[5,] TRUE FALSE FALSE FALSE
[6,] FALSE FALSE FALSE FALSE
但如果我手動比較單元格,結果如下:
> MyTable[1,3]==MyConfig[3]
[1] TRUE
所以,逐個細胞我得到了我期待的結果。 但是如果我比較完整的表格,結果就不同了。
我期待的 output 是:
> head(MyTable[,1:4]==MyConfig)
config.1. config.2. config.3. config.4.
[1,] TRUE FALSE TRUE TRUE
[2,] TRUE FALSE TRUE TRUE
[3,] TRUE FALSE TRUE TRUE
[4,] TRUE FALSE TRUE TRUE
[5,] TRUE FALSE TRUE TRUE
[6,] TRUE FALSE TRUE TRUE
我們可能需要復制“ rep
”值
MyTable[,1:4]==MyConfig[col(MyTable[, 1:4])]
或者t
置數據集,進行比較並t
轉置
t(t(MyTable[1:4] == MyConfig)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.