我有如下的数据框架,看起来像这样(3列列表)。
A tibble: 14 x 4
clinic_name drop_in_hours appointment_hours services
<chr> <list> <list> <list>
1 Birth Control and Sexual Health Centre <list [1]> <list [1]> <list [1]>
2 Black Creek Community Health Centre (Sheridan Mall Site) <list [1]> <list [1]> <list [1]>
3 Black Creek Community Health Centre (Yorkgate mall Site) <list [1]> <list [1]> <list [1]>
4 Crossways Clinic <list [1]> <list [1]> <list [1]>
5 Hassle Free Clinic <list [1]> <list [1]> <list [1]>
6 Immigrant Women's Health Center <list [1]> <list [1]> <list [1]>
7 Rexdale Community Health Center <list [1]> <list [1]> <list [1]>
8 Rexdale Youth Resource Center <list [1]> <list [1]> <list [1]>
9 Scarborough Sexual Health Clinic <list [1]> <list [1]> <list [1]>
10 Special Treatment Clinic <list [1]> <list [1]> <list [1]>
11 Taibu Community Health Center <list [1]> <list [1]> <list [1]>
12 The Gate <list [1]> <list [1]> <list [1]>
13 The Jane Street Clinic <list [1]> <list [1]> <list [1]>
14 The Talk Shop <list [1]> <list [1]> <list [1]>
我想将其输出为csv文件。我注意到 Dataframe 的列不应该在R中列出。所以我做了一些谷歌,找到了这个save data.frames with list-column,所以我尝试了一下:
library(tidyverse)
df %>%
mutate(drop_in_hours = map_chr(drop_in_hours, ~ capture.output(dput(.))),
appointment_hours = map_chr(appointment_hours, ~ capture.output(dput(.))),
services = map_chr(services, ~ capture.output(dput(.))) ) %>%
write_csv("health.csv")
但是我得到了一个错误,我错过了什么吗?
Error in mutate_impl(.data, dots) :
Evaluation error: Result 4 is not a length 1 atomic vector
.
6条答案
按热度按时间l7wslrjt1#
创建包含列表列的tibble:
编写一个通用函数,将任意列表列转换为字符类型:
对列表列的tibble应用函数:
将新格式化的 Dataframe 写入csv文件:
这是一个csv文件,列表列展开为常规字符串。
这里是一个包罗万象的函数,只需要传入你的tibble和文件名:
用法:
ijxebb2r2#
这里有另一个可能更简单一点的选择。
根据数据的不同,逗号分隔的值可能会变得复杂,所以我使用一个bar
|
来分隔列表列中的值:starwars
是dplyr
示例 Dataframe 之一。afdcj2ne3#
我有一个类似的dataframe,其中包含列表列,我想保存为csv。我想出了这个方法。以及如何将列转换回列表。
pcrecxhr4#
是否有任何特定的原因,为什么你想保存列作为一个列表?或者,你可以使用
unnest
并保存在csv中。此外,当你读文件时,你可以把它放回去。
bvk5enib5#
exploratory::list_to_text()
将把list
列转换为character
列。默认值是sep = ", "
,如果写入. csv,我建议将其更改为其他值。devtools::install_github("exploratory-io/exploratory_func")
https://github.com/exploratory-io/exploratory_func/blob/master/LICENSE.md
wooyq4lh6#
在@cybernetic的例子之后,下面使用dplyr::mutate_if的解决方案对我来说很有效。