如何将带有矢量条目的数据框导出到CSV文件中?

时间:2018-06-14 19:10:26

标签: r dataframe export-to-csv jsonlite

我有一个数据框,其中一些条目作为列表。这是从JSON文件导入的,其中一个条目可能有多个标记。它使用带有jsonlite的{​​{1}}包导入JSON文件。我的代码栏中的示例条目是:

flatten=TRUE

我过滤了表格并希望将其导出到csv。当我尝试list(tag = c("ethicaltheory", "gametheory"), raw_tag = c("ethical heory", "Game Theory")) 命令时,遇到write.csv的第一个条目时遇到错误:

  

"未实现的类型'列表' in' EncodeElement'"

问题是我可以按原样导出此文件,导入时是否出错?

我可以将条目转换为字符串或其他内容,但我不确定如何为整个表格执行此操作。

1 个答案:

答案 0 :(得分:0)

有趣的问题。我不知道data.frame可以存储list。该算法采用存储在list行中的可变长度data.frame。然后它找到最大长度,创建具有适当尺寸的matrix,然后保存文件。

x <- list(tag = letters[1:2], raw_tag = letters[1:3])
y <- list(tag = letters[1:2], raw_tag = letters[1:2])
z <- list(tag = letters[1:3], raw_tag = letters[1:4])
df <- data.frame(clmn = I(list(x, y, z)))

r <- apply(df, 1, unlist)
lm <- max(unlist(lapply(r, length)))

df <- data.frame(
  matrix(
    rep(0, (lm * nrow(df))),
    ncol = lm
    )
  )
)

vals.v <- unlist(lapply(1:nrow(df), function(i) {
  v <- unlist(r[i])
  l <- length(v)
  c(v, rep(0, lm - l))
}))
fin.res <- t(matrix(vals.v, ncol = nrow(df)))

# write.csv(fin.res, "res2.csv") # uncomment to save CSV file