![](/img/trans.png)
[英]Read and Write Excel and CSV files from Sharepoint via R
[英]How to read and write csv files in parallel in R
我有几百万个小(每个几 MB)csv 文件,我需要读入、修改然后写出。 如何在 R 中并行执行此操作? 我尝试了以下方法,但没有任何反应。 我不需要组合任何东西——我只想一次处理多个文件。 我希望这是可能的,否则,我将长期存在。 也许这甚至是不可能的 - 是否可以一次从硬盘驱动器读取和写入多个文件? 我正在运行 Windows 10 操作系统。
registerDoParallel(cores = 2)
foreach (x in 1:100) %:%
foreach (y in 1:100) %dopar% {
readr::read_csv(paste0('fake_file',x,'_',y,'csv'))
# work on files
readr::write_csv(paste0('fake_file',x,'_',y,'csv'))
}
只需使用 vroom
library(vroom)
vroom("your_path")
这是另一个在幕后使用未来 package 的解决方案
library(tidyverse)
dir.create("example_data")
for (i in 1:10) {
df <- as.data.frame(matrix(sample(1000),ncol = 10))
write_csv(df,file = str_c("example_data/",i,"test.csv"))
}
# Create a function that does what you want for one file (try to test it)
file_function <- function(file_name){
df_read <- read_csv(file_name, col_types = cols())
df_processed <- df_read %>%
mutate(across(everything(),.fns = ~ .x * 10))
df_processed %>%
write_csv(file_name)
str_c(file_name," processed")
}
# get file names
file_names <- list.files(path = "example_data/",full.names = T)
# furrr functional solution
library(furrr)
# plan execution
# multisession if windows
# multicore if linux or mac
set.seed(123)
plan(multisession,workers = availableCores())
file_names %>% future_map(file_function,.options = furrr_options(seed = TRUE))
# realease memory
plan(sequential)
# realease hd
unlink("example_data",recursive = T)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.