如何解决将R read_fwf应用于文件列表
我想将固定宽度文件的目录读入单个数据帧,并尝试使用以下代码从readr使用read_fwf做到这一点:
library(plyr)
library(tidyverse)
file_list <- dir("./Data",full.names = TRUE)
col_widths <- rep.int(5,4160)
data_import <- ldply(file_list,function(x) read_fwf(fwf_widths(col_widths),skip = 2))
这将返回错误:
Error: `file` must be a string,raw vector or a connection.
如果我执行read_fwf(file_list[[1]],fwf_widths(col_widths),skip = 2)
,则此操作确实可以从单个文件中导入数据。是什么原因导致read_fwf无法应用到file_list的每个元素?我误会了ldply的作用吗?
非常感谢
解决方法
请问申请家庭可以解决这个问题吗?
如果是,我建议以下内容:
file_list <- <-list.files(pattern = "*./Data")
file_list <-sapply(file_list,read_fwf)
,
您需要将数据作为第一个参数传递给read_fwf
。试试:
data_import <- ldply(file_list,function(x)
read_fwf(x,fwf_widths(col_widths),skip = 2))
plyr
已退休,因此您可能对这些替代解决方案感兴趣:
#Option 1
data_import <- purrr::map_df(file_list,function(x)
read_fwf(x,skip = 2))
#Option 2
data_import <- do.call(rbind,lapply(file_list,function(x)
read_fwf(x,skip = 2)))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。