繁体   English   中英

如何将字符列强制转换为列表列

[英]How to coerce a character column to a list column

我正在尝试绑定数据帧行。 聚合后,我用列表列生成了一些数据框,但有些是字符。 我找不到绑定它们的方法。 我尝试使用as.list()转换字符列,但这没有用。

library(dplyr)
df1 <- data.frame(a = c(1,2,3),stringsAsFactors = F)
df1$b <-  list(c("1","2"),"4",c("5","6"))
> df1
  a    b
1 1 1, 2
2 2    4
3 3 5, 6
df2 <- data.frame(a=c(4,5),b=c("9","12"),stringsAsFactors = F)
> df2
  a  b
1 4  9
2 5 12
dplyr::bind_rows(df2,df1)
Error in bind_rows_(x, .id) : 
  Column `b` can't be converted from character to list

我不太了解dplyr库,但是使用下面的基数R的rbind()似乎有效:

df1 <- data.frame(a = c(1,2,3),stringsAsFactors = F)
df1$b <-  list(c("1","2"),"4",c("5","6"))
df2 <- data.frame(a=c(4,5),b=c("9","12"),stringsAsFactors = F)

result <- rbind(df1, df2)

class(result$a)
[1] "numeric"
class(result$b)
[1] "list"

演示版

如果您想使用bind_rows()此操作, bind_rows()查看错误消息。 看起来dplyr不喜欢一个数据帧具有字符数据,而另一个数据帧具有列表数据。 您可以尝试将字符列转换为列表,然后调用bind_rows ,例如

df2$b <- as.list(df2$b)
dplyr::bind_rows(df2,df1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM