我试图找到基因共表达网络之间的共同点。这是一个玩具示例:
Dataset 1 Dataset 2 Dataset 3
A:B A:B A:B
D:E NA D:E
因此,通过相交这些列,A:B是要包括的边,但不是D:E。
我的问题是我的边缘可以左右任意表示:A:B或B:A。我也有A和B作为单独的列。因此,任何一个数据框都将如下所示:
Gene1 Gene2 Edge
A B A:B
或者这个:
Gene1 Gene2 Edge
B A B:A
这意味着在尝试相交时,您可能会得到类似以下的内容:
Dataset 1 Dataset 2 Dataset 3 Dataset 4 Dataset5
B:A A:B A:B B:A A:B
匹配字符串将不起作用,因为即使它们之间的关系仍然相同,它们也会被认为是不同的
我如何子集一个数据框,无论我的基因顺序如何,我都可以找到一个基因对?通过查询字符串“ gene1:gene2”或使用具有Gene1名称的列和具有Gene2名称的列。
答案 0 :(得分:0)
我不知道以下内容是否使您接近所需的内容,但确实可以解决字符串匹配的问题。
overrides.Add(objType, name, ignoreAttribute);
答案 1 :(得分:0)
我不知道你想要什么。这是我的尝试。如果您以相同的方式订购基因,也许会对您有所帮助。
df1 <-
structure(list(Dataset1 = c("B:A", "E:A"), Dataset2 = c("A:B",
"A:E"), Dataset3 = c("A:B", "A:B"), Dataset4 = c("B:A", "E:A"
), Dataset5 = c("A:B", "B:A")), row.names = c(NA, -2L), class = "data.frame")
# Dataset1 Dataset2 Dataset3 Dataset4 Dataset5
#1 B:A A:B A:B B:A A:B
#2 E:A A:E A:B E:A B:A
library(magrittr)
fun1 <- function(x) {
strsplit(x,":") %>% lapply(sort) %>% lapply(paste0,collapse=":") %>% unlist
}
df1[] %<>% lapply(fun1)
df1
# Dataset1 Dataset2 Dataset3 Dataset4 Dataset5
#1 A:B A:B A:B A:B A:B
#2 A:E A:E A:B A:E A:B