R语言 在map函数循环中使用文件名保存csv文件

2w3kk1z5  于 2022-12-06  发布在  其他
关注(0)|答案(1)|浏览(174)

我正在使用map函数循环一个文件夹中的多个csv文件。我想使用csv文件名的分片版本保存循环的结果。但是当我试图将结果保存到csv文件时,我收到了一个错误。下面是我的代码

library(tidyverse)
library(fs)
library(dismo)

file_paths <- fs::dir_ls("loop/")

file_paths %>%
  map(function (path){
    all_data <- read_csv(path, show_col_types = FALSE)
    name <- tools::file_path_sans_ext(basename(file_paths))
    print(name)
    t_max <- all_data[,c(2)]
    t_min <- all_data[, c(3)]
    rain_fall <- all_data[,c(4)]
    res <- data.frame(biovars(t_max, t_min, rain_fall))
    myfile = sprintf("%s_bio.csv", name)
    write_csv(res, file=myfile, col_names = TRUE)
  })

错误:

Error in if (is_url(path)) { : the condition has length > 1
myzjeezk

myzjeezk1#

你在map中使用的是full_paths的完整向量,你应该只使用单数的path

file_paths %>%
  map(function (path){
    all_data <- read_csv(path, show_col_types = FALSE)
    name <- tools::file_path_sans_ext(basename(path))
    print(name)
    t_max <- all_data[,c(2)]
    t_min <- all_data[, c(3)]
    rain_fall <- all_data[,c(4)]
    res <- data.frame(biovars(t_max, t_min, rain_fall))
    myfile = sprintf("%s_bio.csv", name)
    write_csv(res, file=myfile, col_names = TRUE)
  })

相关问题