如何在R中创建一个新的read.csv,以便它可以在不键入.csv文件全名的情况下读取.csv文件

如何在R中创建一个新的read.csv,以便它可以在不键入.csv文件全名的情况下读取.csv文件,r,function,csv,R,Function,Csv,伙计们,谢谢你们读这篇文章。这是我第一次写程序,所以请原谅我提出了愚蠢的问题 我有一堆.csv文件,名为:001-XXX.csv;002-XXX.csv…150-XXX.csv。这里XXX是一个很长的名字标签。所以每次我需要输入read.csv(“001 xxx.csv”)时都有点烦人。我想创建一个名为“newread”的函数,它只要求我输入前三位数字,即真实的id号,以读取.csv文件。我认为“新阅读”应该是这样的: newread <- function(id){ as.chara

伙计们,谢谢你们读这篇文章。这是我第一次写程序,所以请原谅我提出了愚蠢的问题

我有一堆.csv文件,名为:001-XXX.csv;002-XXX.csv…150-XXX.csv。这里XXX是一个很长的名字标签。所以每次我需要输入read.csv(“001 xxx.csv”)时都有点烦人。我想创建一个名为“newread”的函数,它只要求我输入前三位数字,即真实的id号,以读取.csv文件。我认为“新阅读”应该是这样的:

newread <- function(id){
  as.character(id)
  a <- paste(id,"-XXX.csv",sep="")  
  read.csv(a)
}
newread
as.character(id)
不会将
id
更改为字符串。将其更改为:

id = as.character(id)
编辑:根据注释,您应该使用字符参数调用
newread()
,并且
newread(001)
newread(1)
之间没有区别。字符(id)
不会将
id
更改为字符串。将其更改为:

id = as.character(id)

编辑:根据评论,您应该使用字符参数调用
newread()
,并且
newread(001)
newread(1)
之间没有区别。这并不是对您问题的具体回答(其他人已经讨论过了这一点),而是一些可能有助于以不同方式完成任务的建议

首先,R的一些GUI具有文件名完成。您可以键入第一部分:
read.csv(“001-
),然后按一个键或多个键的组合(在windows GUI中按TAB键),文件名的其余部分将为您填写(只要它是唯一的)

您可以使用
文件。选择
选择.files
函数打开一个对话框,用鼠标选择您的文件:
读取.csv(file.choose())

如果您想读入上述所有文件,则可以使用
lappy
sprintf
list.files
(或其他)一步读入:


这并不是对你的问题的具体回答(其他人也提到了这一点),而是一些可能有助于以不同方式完成任务的建议

首先,R的一些GUI具有文件名完成。您可以键入第一部分:
read.csv(“001-
),然后点击一个键或多个键的组合(在windows GUI中按TAB键),其余的文件名将为您填写(只要它是唯一的)

您可以使用
文件。选择
选择.files
函数打开一个对话框,用鼠标选择您的文件:
读取.csv(file.choose())

如果您想读入上述所有文件,则可以使用
lappy
sprintf
list.files
(或其他)一步读入:


这可能会引起您的兴趣:谢谢,@Roland!但是,我的代码有什么问题?我搜索了几个小时,但不知道为什么。错误表明存在不匹配的偏执,但由于我在您的代码中没有看到任何偏执,我假设您没有显示某些内容。重新发布评论,因为它已被删除,并给出了一个答案:您需要传递
id
作为字符,例如,
newread(“001”)
,或者使用
sprintf
,如果你想沿着这条路走。@Roland结果是Rstudio正在执行代码到光标所在的行。由于我不知道这一点,并且将光标放在最后一个大括号之前,Rstudio无法执行完整的代码…这可能会让你感兴趣:谢谢,@Roland!但是,我的代码怎么了代码?我搜索了几个小时,但不知道为什么。错误表明不匹配的论文,但由于我在你的代码中没有看到任何内容,我假设你没有显示。重新发布评论,因为它已被删除,并带有答案:你需要将
id
作为字符传递,例如,
newread(“001”)
,或者使用
sprintf
,如果你想沿着这条路走。@Roland结果是Rstudio正在执行代码到光标所在的行。因为我不知道这一点,并且将光标放在最后一个大括号之前,Rstudio无法执行完整的代码…这不会有帮助。他们需要以字符形式传递
id
,例如,
newread(“001”)
,或者使用
sprintf
。这没有帮助。他们需要将
id
作为字符传递,例如,
newread(“001”)
,或者使用
sprintf
mvcsvlist <- lapply( list.files(pattern="\\.csv$"), read.csv )
tmp <- list.files(pattern="001.*csv$")
read.csv(tmp[1])