r - 使用 read_csv 应用
问题描述
我无法理解 lapply 与 read_csv 函数。问题是 Lapply 是否创建了一个数据帧数组,我可以在其中使用 data[i] 访问每个数据帧?
我做了什么:
我已经下载了 5 个城市的数据集(在这里找到:https ://archive.ics.uci.edu/ml/machine-learning-databases/00394/FiveCitiePMData.rar )并编写了 R 代码来提取 5 个 csv 文件并保存数据框如下:
cities <- list.files('FiveCities')
cities_df <- lapply(cities, read.csv)
我的目标是创建一个工作簿并将每个 csv 文件保存到一个 xlsx 文件中,每个 csv 都是工作簿中的一个工作表,如下所示:
wb <- createWorkbook()
for(i in 1:length(cities)){
sheet <- addWorksheet(wb , i)
writeData(wb, sheet, cities_df[i])
}
我感到困惑的是访问每个 csv 像这样的城市_df [i]。我认为 city_df[i] 访问数据框的第 i 行,而不是整个单独的数据框。lapply 是否会创建一个名为 city_df[i] 的数据框数组,或者会发生什么?如果它确实创建了一个数组,那么我为什么可以简单地调用 city_df 并接收结果而不指定要调用数组中的哪个数据框?
解决方案
此代码可能会有所帮助!
library(plyr)
library(readr)
library(tidyverse)
library(openxlsx)
mydir = "C:/Users/mouad/Desktop/assasins creed/new"
myfiles = list.files(path=mydir, pattern="*.csv", full.names=TRUE)
str_length(mydir)
mylist=lapply(1:5, function(j) read_csv(myfiles[[j]]))
setwd(mydir)
wb <- createWorkbook()
lapply(1:length(mylist), function(i){
addWorksheet(wb=wb, sheetName = substr(myfiles[i],str_length(mydir)+1,60))
writeData(wb, sheet = i, mylist[[i]][length(mylist[[i]])])
})
saveWorkbook(wb, "test.xlsx", overwrite = TRUE)
read.xlsx("test.xlsx", sheet = 1)
推荐阅读
- c - 如何在此代码中添加不正确的输入,不能使用“开关”
- prisma - 坚持使用 prisma1 模式设计和数据迁移
- laravel - 如何强制 Laravel 返回正确的 JSON 数据类型?
- go - Golang Gorm 如何将嵌套对象写入数据库?
- flutter - 如何在没有 dart:io 包的情况下在 Flutter Web 应用程序中创建、写入和读取 .json 文件?
- mysql - MySQL SELECT FROM 名称在另一个表中的表
- postman - 天蓝色数据工厂分页
- node.js - 为什么 VSCode 调试器会在终端生成不完整的命令而无法启动?
- java - 使用 Gradle 构建的最新 Vaadin SpringBoot 应用程序默认尝试下线
- javascript - 如何从 webhook 获取 Stripe 的“payment_intent.suceeded”响应以处理订单?