在r中列出相关变量
我有两列相关变量。我想把它们合并成一个列表。例如,如果数据帧如下所示在r中列出相关变量,r,R,我有两列相关变量。我想把它们合并成一个列表。例如,如果数据帧如下所示 A B B C D E 这表明A与B相关,B与C相关,等等 然后,我希望新列表包含: A, B, C D, E 任何帮助都将不胜感激。理想情况下,使用R。谢谢。使用诸如igraph之类的软件包可能会更容易,但这里有一种在基本R中实现的方法 df <- data.frame(X = c("A","B","D"), Y = c("B","C","E"), stringsAsFactors = FALSE
A B
B C
D E
这表明A与B相关,B与C相关,等等
然后,我希望新列表包含:
A, B, C
D, E
任何帮助都将不胜感激。理想情况下,使用R。谢谢。使用诸如
igraph
之类的软件包可能会更容易,但这里有一种在基本R中实现的方法
df <- data.frame(X = c("A","B","D"), Y = c("B","C","E"), stringsAsFactors = FALSE)
nodes <- data.frame(node = unique(c(df$X, df$Y)),
stringsAsFactors = FALSE) #set of all unique values
nodes$group <- 1:nrow(nodes) #start with each in its own group
for(i in seq_len(nrow(df))){ #loop through df
rowvalues <- unlist(df[i, ]) #linked pair in row i
nodes$group[nodes$node %in% rowvalues] <- min(nodes$group[nodes$node %in% rowvalues])
#set to min group for linked pair
}
#end result is nodes$group containing unique values for each linked group
nodes
node group
1 A 1
2 B 1
3 D 3
4 C 1
5 E 3
#groups can be extracted as a list with...
split(nodes$node, nodes$group)
$`1`
[1] "A" "B" "C"
$`3`
[1] "D" "E"
df看起来需要igraph
您的数据框只有一行和6列吗?如果是,则使用unique(df)
。如果我误解了你的问题,请澄清和/或提供更多信息。