簡體   English   中英

比較 R 中的數據幀和向量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM