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
有人能帮我吗?
我们可以在行上循环(apply
和MARGIN = 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))