从字符串创建嵌套列表结构

use*_*472 5 string r list

我有一个由 n 个子字符串组成的字符串。它可能看起来像这样:

string <- c("A_AA", "A_BB", "A_BB_AAA", "B_AA", "B_BB", "B_CC")
Run Code Online (Sandbox Code Playgroud)

此字符串中的每个子组件都以“_”与其他任何子组件分隔。这里,第一级由值“A”和“B”组成,第二级由“AA”、“BB”和“CC”组成,第三级由“AAA”组成。更深的嵌套是可能的,解决方案应该扩展到这些情况。嵌套不一定是平衡的,例如“A”只有两个孩子,而“B”有三个,但它也有一个“B”没有的孙子。

本质上,我想在某种 R 对象(最好是列表)中重新创建此字符串中的嵌套结构。因此,嵌套列表结构如下所示:

list("A" = list("AA", "BB" = list("AAA")),
"B" = list("AA", "BB", "CC"))

> $A
  $A[[1]]

  [1] "AA"
  $A$BB
  $A$BB[[1]]
  [1] "CCC"

  $B
  $B[[1]]
  [1] "AA"

  $B[[2]]
  [1] "BB"

  $B[[3]]
  [1] "CC"
Run Code Online (Sandbox Code Playgroud)

对此的任何帮助表示赞赏

Dea*_*gor 3

你可以把它变成一个矩阵而不用太大惊小怪......

string <- c("A_AA", "A_BB", "A_BB_AAA", "B_AA", "B_BB", "B_CC")

splitted<-strsplit(string,"_")
cols<-max(lengths(splitted))
mat<-do.call(rbind,lapply(splitted, "length<-", cols))
Run Code Online (Sandbox Code Playgroud)