Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用R转换树状图/树中的嵌套列表_R_List_Tree_Nested Lists - Fatal编程技术网

使用R转换树状图/树中的嵌套列表

使用R转换树状图/树中的嵌套列表,r,list,tree,nested-lists,R,List,Tree,Nested Lists,是否可以将异构嵌套列表(包含字符向量、其他列表和列表列表)转换为树状图或树对象?其想法是,从一个假设的原点开始,每个嵌套的层添加一个新的分支层 此类列表的示例如下: list(c("tom", "bob", "red"), c("jin", "tonic"), list(c("megan", "tina"), "carl"), "tim", list(c("chris", list(c("stella", "mia", "charly"))), "jack")) 所需的输出(例如,newick

是否可以将异构嵌套列表(包含字符向量、其他列表和列表列表)转换为树状图或树对象?其想法是,从一个假设的原点开始,每个嵌套的层添加一个新的分支层

此类列表的示例如下:

list(c("tom", "bob", "red"), c("jin", "tonic"), list(c("megan", "tina"), "carl"), "tim", list(c("chris", list(c("stella", "mia", "charly"))), "jack"))
所需的输出(例如,newick格式)应如下所示:

plot(read.tree(text = "((tom,bob,red),(jin,tonic),((megan,tina),carl),tim,((chris,(stella,mia,charly)),jack));"))
非常感谢


卢卡

那天晚上,我发现了一些灵感

我做了以下变通方法,以将嵌套列表设置为newick格式树:

x <- list(c("tom", "bob", "red"), c("jin", "tonic"), list(c("megan", "tina"), "carl"), "tim", list(c("chris", list(c("stella", "mia", "charly"))), "jack"))

# flatten list
x2 <- paste0(lapply(x, function(y) paste0("(", paste0(y, collapse = ","), ")")), collapse = ",")

# remove unwanted characters
x2 <- gsub('\"|c|list| ', "", x2)
x2 <- paste0("(", x2, ");")

# remove brackets from single term list object
library(stringr)
x3 <- str_replace_all(x2, "\\([a-z]*\\)", function(x) gsub("^\\(|\\)$", "", x))

# plot
library(ape)
plot(read.tree(text = x3))

x那天晚上,我发现了一些灵感

我做了以下变通方法,以将嵌套列表设置为newick格式树:

x <- list(c("tom", "bob", "red"), c("jin", "tonic"), list(c("megan", "tina"), "carl"), "tim", list(c("chris", list(c("stella", "mia", "charly"))), "jack"))

# flatten list
x2 <- paste0(lapply(x, function(y) paste0("(", paste0(y, collapse = ","), ")")), collapse = ",")

# remove unwanted characters
x2 <- gsub('\"|c|list| ', "", x2)
x2 <- paste0("(", x2, ");")

# remove brackets from single term list object
library(stringr)
x3 <- str_replace_all(x2, "\\([a-z]*\\)", function(x) gsub("^\\(|\\)$", "", x))

# plot
library(ape)
plot(read.tree(text = x3))
x