将数据帧中的多个列与向量进行比较,并将新列添加到数据帧中,以指示R中匹配的柱名称

  • 本文关键字:数据帧 指示 添加 新列 向量 比较 r
  • 更新时间 :
  • 英文 :

my_vector <- c("g1","g2","g3","g4")
Read_1 Read_2 Read_3 Read_4
g1     o      o      g1
o     g2     o      g2
g3     g3    g3      o   

Read_1,2,3,4是我的数据帧列名,我有一个名为my_vector的向量。我想要的是取向量并在数据帧之间进行比较,如果找到匹配,则报告匹配的列名。我尝试了两列,但我不知道如何与多列进行比较

这是我预期的输出

Read_1 Read_2 Read_3 Read_4 Match_cloumn
g1     o     o       g1      Read_1,Read_4
o      g2    o       g2      Read_2,Read_4
g3     g3    g3      o       Read_1,Read_2,Read_2

有人能帮我吗?

我们可以在行上循环(applyMARGIN = 1(,根据"my_vector"元素和paste对的名称进行子集

df1$Match_column <- apply(df1, 1, function(x)
toString(names(x)[x %in% my_vector]))

-输出

df1
Read_1 Read_2 Read_3 Read_4           Match_column
1     g1      o      o     g1         Read_1, Read_4
2      o     g2      o     g2         Read_2, Read_4
3     g3     g3     g3      o Read_1, Read_2, Read_3

数据

df1 <- structure(list(Read_1 = c("g1", "o", "g3"), Read_2 = c("o", "g2", 
"g3"), Read_3 = c("o", "o", "g3"), Read_4 = c("g1", "g2", "o"
)), class = "data.frame", row.names = c(NA, -3L))

相关内容

最新更新