Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 组合ldply以组合多个csv文件,并通过mutate/basename添加具有文件名的列_R_Csv - Fatal编程技术网

R 组合ldply以组合多个csv文件,并通过mutate/basename添加具有文件名的列

R 组合ldply以组合多个csv文件,并通过mutate/basename添加具有文件名的列,r,csv,R,Csv,我正在尝试在这里应用代码 我试图找出适当的tidyverse语法是添加列,列出数据来源文件的名称 这是我的 test <- ldply( .data = list.files(pattern="*.csv"), .fun = read.csv, header = TRUE) %>% mutate(filename=gsub(".csv","",basename(x))) test% mutate(filename=gsu

我正在尝试在这里应用代码

我试图找出适当的
tidyverse
语法是添加列,列出数据来源文件的名称

这是我的

test <- ldply( .data = list.files(pattern="*.csv"),
              .fun = read.csv,
               header = TRUE) %>%
  mutate(filename=gsub(".csv","",basename(x)))
test%
mutate(filename=gsub(“.csv”,”,basename(x)))
我明白了

“basename(x)中出错:未找到对象“x”消息”

我的理解是basename(path),但当我将路径设置为包含文件的文件夹时,最终添加的filename列只有文件夹名


非常感谢您的帮助

您可以使用
purrr::map\u dfr

purrr::map_dfr(list.files(pattern="*.csv", full.names = TRUE),
    ~read.csv(.x) %>% mutate(file = sub(".csv$", "", basename(.x))))

我们可以使用
imap

library(purrr)
library(dplyr)
library(stringr)
library(readr)
files <- list.files(pattern="*.csv", full.names = TRUE)
fileSub <- str_remove(basename(files), "\\.csv$")
imap_dfr(setNames(files, fileSub), ~ read_csv(.x) %>%
          mutate(file = .y))
库(purrr)
图书馆(dplyr)
图书馆(stringr)
图书馆(readr)

文件我不知道这是否有帮助,我偶然发现了这个非常简单的解决方案

上下文:ldply创建的.id列列出了输入向量中每个项的名称。因此,要组合多个csv文件并使用文件名创建一个新列,可以执行以下操作:

# get csv files in current working directory as a character vector
file_names <- list.files(pattern="*.csv") #for the example above it is .data=list.files(pattern="*.csv")

# Name these items (in this case equal to the items themselves, but can be subbed out for sample.Ids)
names(file_names) <- paste(file_names) # or for the example above names(.data) <- paste(.data)

# then use ldply to do the hard work
combined_csv <- ldply(file_names, read.csv)

# Names are stored under .id
combined_csv$.id
#获取当前工作目录中的csv文件作为字符向量

文件名谢谢。我得到一个错误,其中一列说它不能从因子转换为数值(但据我所知,具体列是数字开始)。是否有需要进行不同设置的参数?谢谢again@RookieSnowbodah我只是在我的系统上尝试了一些csv文件。这对我有用。但是您可以尝试在
read.csv
中使用
stringsAsFactors=FALSE
?刚意识到给我发问题的专栏有一些数字和一些“文件