r - lapply 用于多个文件
问题描述
BorderData07 <- read_csv("Downloads/BorderData/BorderApprehension2007.csv")
BorderData08 <- read_csv("Downloads/BorderData/BorderApprehension2008.csv")
BorderData07[is.na(BorderData07)] = 0
B08[is.na(B08)] = 0
BorderData07$CITIZENSHIP <- str_to_title(BorderData07$CITIZENSHIP)
BorderData07$Region <- countrycode(sourcevar = BorderData07$CITIZENSHIP, origin = "country.name", destination = "region")
BorderData07[nrow(BorderData07), 26] <- "Total"
World_Region <- ddply(BorderData07,"Region",numcolwise(sum))
ggplot(World_Region, aes(x = Region, y = Total)) + geom_col(width = 0.5, position = position_dodge(3), fill = 'blue', alpha = 0.5) + scale_y_log10() + coord_flip() + geom_text(aes(label=Total), alpha = 1.0, check_overlap = TRUE) + ggtitle("Apprehension By World Region Totals in 2007")
我正在尝试使用 lapply 为我的边界数据的每一年运行每个 csv 文件。与每一个的唯一区别是 csv 文件的结尾和图表的标题。我对 lapply 的了解非常有限,并且无法学习如何使其正常运行。
解决方案
将您要应用于每个文件的所有内容放在一个函数中
apply_fun <- function(file) {
x <- read_csv(file)
year <- str_extract(file, '\\d+')
x[is.na(x)] = 0
x$CITIZENSHIP <- str_to_title(x$CITIZENSHIP)
x$Region <- countrycode(sourcevar = x$CITIZENSHIP, origin = "country.name", destination = "region")
x[nrow(x), 26] <- "Total"
World_Region <- ddply(x,"Region",numcolwise(sum))
ggplot(World_Region, aes(x = Region, y = Total)) +
geom_col(width = 0.5, position = position_dodge(3), fill = 'blue', alpha = 0.5) +
scale_y_log10() + coord_flip() +
geom_text(aes(label=Total), alpha = 1.0, check_overlap = TRUE) +
ggtitle(paste0("Apprehension By World Region Totals in", year))
}
然后使用lapply
-
filename <- list.files('Downloads/BorderData/', pattern = '\\.csv$', full.names = TRUE)
list_plots <- lapply(filename, apply_fun)
推荐阅读
- php - Wordpress如何添加页面计数器
- r - 在为什么轴上切割分组条形图,如何在每个条形图上添加置信区间?
- google-sheets - 谷歌表格自定义菜单根据第 1 列中的文本值隐藏行
- java - 在使用 spring boot 和响应式编程时,我在控制台中看到了 actor-tcp-nio。这是什么意思?
- python - 为什么我的条形图没有按降序排列,而我的数据已使用 sort_values 按降序排列?(与熊猫)
- typescript - 从 Uniswap V2 获取正确的执行价格
- python - Python Treeview 如何按文件类型对文件进行排序?
- c++ - 在参数包和可变参数模板上解包元组的语法
- json - Typescript HttpClient.post 从 json 格式的字符串返回错误请求
- javascript - WebRTC 报价缺少很多字段