如何在R中导入文件名中包含特定单词的.csv文件?

如何在R中导入文件名中包含特定单词的.csv文件?,r,csv,R,Csv,谢谢你阅读这篇文章。我几乎每天都从Qualtrics平台导入一个.csv文件到一个特定的文件夹(即“论文文件夹”)。每当我将.csv文件导入到Thesis_文件夹时,.csv文件的默认名称包括今天的日期和时间。换句话说,每次我从Qualtrics导入数据时,.csv文件的名称都会更改(例如,“论文数据6月+3日+2019++12:48”)。但是,.csv文件始终包含“论文数据”字样。我的问题是:如果文件名中包含“论文数据”,如何导入.csv文件 list.files()列出具有特定模式的文件的名

谢谢你阅读这篇文章。我几乎每天都从Qualtrics平台导入一个.csv文件到一个特定的文件夹(即“论文文件夹”)。每当我将.csv文件导入到Thesis_文件夹时,.csv文件的默认名称包括今天的日期和时间。换句话说,每次我从Qualtrics导入数据时,.csv文件的名称都会更改(例如,“论文数据6月+3日+2019++12:48”)。但是,.csv文件始终包含“论文数据”字样。我的问题是:如果文件名中包含“论文数据”,如何导入.csv文件


list.files()列出具有特定模式的文件的名称,但不会将其作为数据帧导入。谢谢。

未经测试,因为您没有提供示例数据,但这应该可以:

library("rio")
library("dplyr")
data <- list.files( # find respective files
  path = "./Thesis_Folder",
  pattern = ".csv$", # you might want a more specific regex if possible
  full.names = TRUE
) %>% 
  lapply(import) %>% # import from rio usually works well
  bind_rows() # bind the list of data.frames to one big df
library(“里约”)
图书馆(“dplyr”)
数据%
Lappy(进口)%>%#从里约进口通常效果良好
bind_rows()#将data.frames列表绑定到一个大df

未测试,因为您没有提供示例数据,但这应该可以:

library("rio")
library("dplyr")
data <- list.files( # find respective files
  path = "./Thesis_Folder",
  pattern = ".csv$", # you might want a more specific regex if possible
  full.names = TRUE
) %>% 
  lapply(import) %>% # import from rio usually works well
  bind_rows() # bind the list of data.frames to one big df
library(“里约”)
图书馆(“dplyr”)
数据%
Lappy(进口)%>%#从里约进口通常效果良好
bind_rows()#将data.frames列表绑定到一个大df

文件
文件CSV文件?CSV文件?谢谢你花时间帮忙,@JBGruber。不幸的是,这段代码不起作用,它导入了空的数据帧对象。此外,我不确定这是否可以做到,因为这段代码不包含特定的单词(论文数据)。正如我在上面所写的,您可能希望更改模式,以仅获取真正需要的文件。如果所有文件都以“论文数据”开头,您可能需要类似于
“论文数据+.csv$”
的内容。我现在已经测试过了,代码本身也可以运行了。谢谢你花时间来帮助我,@JBGruber。不幸的是,这段代码不起作用,它导入了空的数据帧对象。此外,我不确定这是否可以做到,因为这段代码不包含特定的单词(论文数据)。正如我在上面所写的,您可能希望更改模式,以仅获取真正需要的文件。如果所有文件都以“论文数据”开头,您可能需要类似于
“论文数据+.csv$”
的内容。我现在已经测试过了,代码本身也可以工作。(1)跳过
grepl
,跳过
list.files(…,pattern=“.*Thesis.\\\.csv$”)。(2) 可能应该包括
list.files(…,full.names=TRUE)
,否则在当前目录以外的目录中找不到它们。(3)
assign
工作流效率低下,建议
list\u框架(4)如果必须对
循环使用
,我建议
seq\u沿着(文件)
seq\u len(长度(文件))
而不是
1:length(文件)
。为什么?当您的文件列表因某种原因为空(
character(0)
)时,
for(i in 1:0)
将运行两次,而不是预期的零次(请参见:
1:length(character(0))
)。运行良好,非常感谢,both@DSGym和@r2evans。我刚刚添加了这段短代码,以将其存储为数据帧:Thesis_data=as.data.frame(list_of_frames[[1]])您不需要那里的
as.data.frame
。您的数据已存储为数据。谢谢您的提示,@r2evans。我所需要的只是导入名称中包含“论文数据”一词的.csv数据文件,我可以在您和DSGym的帮助下完成这项工作。我只有一个数据文件,而不是多个数据文件。(1)
list.files(…,pattern=“.*Thesis.\\\.csv$”
,跳过
grepl
。(2) 可能应该包括
list.files(…,full.names=TRUE)
,否则在当前目录以外的目录中找不到它们。(3)
assign
工作流效率低下,建议
list\u框架(4)如果必须对
循环使用
,我建议
seq\u沿着(文件)
seq\u len(长度(文件))
而不是
1:length(文件)
。为什么?当您的文件列表因某种原因为空(
character(0)
)时,
for(i in 1:0)
将运行两次,而不是预期的零次(请参见:
1:length(character(0))
)。运行良好,非常感谢,both@DSGym和@r2evans。我刚刚添加了这段短代码,以将其存储为数据帧:Thesis_data=as.data.frame(list_of_frames[[1]])您不需要那里的
as.data.frame
。您的数据已存储为数据。谢谢您的提示,@r2evans。我所需要的只是导入名称中包含“论文数据”一词的.csv数据文件,我可以在您和DSGym的帮助下完成这项工作。我只有一个数据文件,而不是多个数据文件。