【问题标题】:How to convert a list of strings to data frame?如何将字符串列表转换为数据框?
【发布时间】:2015-05-12 20:04:59
【问题描述】:

我想将字符串列表转换为数据框。 给定结构:

lst <- list(NULL, "PSYC", c("PSYC", "PHIL"), "PHIL")

我想生成一个数据框

      Index     major_cd
       1            NULL
       2            PSYC
       3            PSYC
       3            PHIL
       4            PHIL

注意列表中的第 3 项如何变成数据框的 2 行。

【问题讨论】:

  • 您可能需要将NULL 替换为“NULL”左右的字符以获得所需的输出
  • 在帐户中使用 akruns 评论,您还可以使用 base R 做一些丑陋的事情,例如 cbind.data.frame(Index = rep(seq(length(l)), lapply(l, length)), major_cd = unlist(l))

标签: r list dataframe


【解决方案1】:

我们可以将 'lst' 中的 NULL 元素替换为 'NA' 或 "NULL",并在设置 'lst' 的名称后使用 tidyr 中的 unnest

lst[sapply(lst, is.null)] <- NA

或者正如 @David Arenburg 在 cmets 中提到的那样,设置为 "NULL" 而不是 NA 将给出预期的输出,如图所示

library(tidyr)
unnest(setNames(lst, seq_along(lst)), Index)
#  Index    x
#1     1 <NA>
#2     2 PSYC
#3     3 PSYC
#4     3 PHIL
#5     4 PHIL

【讨论】:

  • 或以 R 为基础,stack(setNames(lapply(lst, function(x) replace(x, is.null(x), NA)), seq_along(lst)))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-28
  • 2022-08-17
  • 1970-01-01
  • 2019-09-14
  • 2017-12-19
  • 2020-09-21
  • 2018-02-26
相关资源
最近更新 更多