【问题标题】:Creating complex list structure from data frame in R从R中的数据框创建复杂的列表结构
【发布时间】:2014-04-14 06:59:45
【问题描述】:

我希望从 R 中的数据框创建列表列表。

我的数据框看起来像这样:

  Name    Age
1 John    30
2 Dan     40
3 Charlie 20
...(few thousand rows)...

我正在尝试生成一个列表,以便列表的键是数据框中的名称,并且每个键/名称都指向一个列表,如 list(age=30)

最后,我正在寻找类似的东西

 > str(list(John=list(age=30),Dan=list(age=40),Charlie=list(age=20),...))
 List of 3
  $ John   :List of 1
   ..$ age: num 30
  $ Dan    :List of 1
   ..$ age: num 40
  $ Charlie:List of 1
   ..$ age: num 20
  ...

【问题讨论】:

    标签: r list dataframe


    【解决方案1】:

    你可以结合split、lapply和as.list:

    lapply(split(df, df$Name), function(x)as.list(x[-1]))
    #$Charlie
    #$Charlie$Age
    #[1] 20
    
    #$Dan
    #$Dan$Age
    #[1] 40
    
    #$John
    #$John$Age
    #[1] 30
    

    【讨论】:

    • +1 因为这种方法完全符合我上面设置的条件。
    【解决方案2】:
    z        <- lapply(df$Age,function(x)list(age=as.numeric(x)))
    names(z) <- df$Name
    str(z)
    # List of 3
    #  $ John   :List of 1
    #   ..$ age: num 30
    #  $ Dan    :List of 1
    #   ..$ age: num 40
    #  $ Charlie:List of 1
    #   ..$ age: num 20
    

    【讨论】:

    • 我真的很欣赏这种方法的多功能性,尽管如果列和键相同,另一个答案特别有效。
    猜你喜欢
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 2020-09-23
    • 2023-03-21
    • 1970-01-01
    • 2023-01-16
    • 2023-02-23
    • 1970-01-01
    相关资源
    最近更新 更多