【问题标题】:R dataframe convert "list" type columns to chr/int/R 数据框将“列表”类型的列转换为 chr/int/
【发布时间】:2021-03-31 09:17:47
【问题描述】:

我收到了一个如下所示的数据框:

a = as.data.frame(cbind(list("BNP Paribas", NULL, "Bano SA", "Unicredit"),
  list(1,2,3,4)))

我想把它转换成这样的框架:

NAME <- c("BNP Paribas", NA, "Bano SA", "Unicredit")
value <- c(1,2,3,4)
b<- data.frame(NAME,value)

编辑:这篇文章的早期版本包含令人困惑的 scnreeshots。我找到了一种以编程方式创建有问题的两种数据结构的方法。

【问题讨论】:

  • class(c_67) 是什么?
  • numeric 而另一个是data.frame
  • 我试过as.data.frame(c_67)
  • 如何创建data.tables?
  • 您应该向我们提供更多信息,而不仅仅是屏幕截图来帮助您。你确定class(c_67) 返回数字吗? length(c_67) 是什么? lengths(c_67) 是什么?

标签: r list dataframe


【解决方案1】:

目前还不清楚这里发生了什么。在您的第一个示例中,c_67 看起来像是单个字符元素列表的嵌套列表,而在后者中,您似乎有一个标准的 data.frame

我会假设类似

columns <- as.data.frame(lapply(c_67, unlist, recursive = TRUE))

会做你的工作。但是,如果您可以从其他地方查询它,那似乎是更好的选择。

【讨论】:

  • 谢谢,但如果数据中有 NULL,则此解决方案不起作用。请参阅我更新的通用示例。
  • 这比你之前的例子更有意义。我会花一点时间检查一下
  • 根据您的解决方案,我想出了:c &lt;- as.data.frame(sapply(a, function(x) ifelse(x == "NULL", NA, x))) a_new &lt;- as.data.frame(lapply(c, unlist, recursive = TRUE)) 这似乎有效。请随意调整您的答案,以便我接受。
  • 这比我自己的想法要短很多,所以继续这样做。 :-) 而是添加您自己的答案并接受。
猜你喜欢
  • 2018-06-26
  • 2015-11-14
  • 2013-04-22
  • 2015-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多