我刚刚开始学习如何使用lapply。我想读取一个csv文件夹,对其进行变异以创建一个变量state
(基于文件名的标签),然后将它们完全绑定在一起。
但是,我mutate
对此过程有些困惑。我浏览了几篇文章,似乎最简单的方法是将命令包装到逻辑函数中,然后使用lapply解析它们。
这是我所做的:
file_list <- list.files(pattern = "\\.csv$")
path<-"~/Downloads/Postings CSV"
read_report_data <- function(path) {
report_df <- read.csv(path)
report_df<-mutate(report_df, state=substring(report_df, 20, nchar(report_df) - 9))
}
reports <- lapply(file_list, read_report_data)%>%
bind_rows
但是,我收到此回溯错误:
Error: Column `state` must be length 726 (the number of rows) or one, not 8
不知道我做了什么来收到此错误。非常感谢您的帮助
可行的建议
file_list <- list.files(pattern = "\\.csv$")
path<-"~/Downloads/Postings CSV"
read_report_data <- function(path) {
report_df <- read.csv(path)
mutate(report_df, state = substring(path, 20, nchar(path) - 9))
}
library(purrr)
map_dfr(file_list, read_report_data, full.names = TRUE)
在函数中,substring
不应出现在完整的数据集中。它可以在单个列上,也可以在此处,获得substring
路径的意义
read_report_data <- function(path) {
report_df <- read.csv(path)
mutate(report_df, state = substring(path, 20, nchar(path) - 9))
}
现在,我们可以使用 map_dfr
library(purrr)
map_dfr(file_list, read_report_data)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句