【问题标题】:R & list.files(): list.files will not work within function?R & list.files(): list.files 不能在函数内工作?
【发布时间】:2014-05-13 10:13:39
【问题描述】:

我在 Windows 7 操作系统上使用 Rversion 3.03 并试图解决一个问题。我不确定这是否只是我的愚蠢,或者这是否真的是我的 R 版本的问题。

初始问题:我有一个包含 300 多个 csv 文件的文件夹,我需要指定一个函数来读取用户指定数量的文件。所以我的想法是使用 list.files 函数给我一个 csv 的列表,然后从这个列表中进行选择,而不必重新格式化用户输入以匹配 csv 文件名。

pm <- function(directory, id = 1:332) {

setwd("C:/Users/cw/Documents")
setwd(directory)

x <- id[1] 
x

files <- list.files() 

#for (x in 1:length(id))
#data[i] <- read.csv(files[x], header=T) 
#}
}

pm("specdata", 25:30)

所以首先我设置了 wd,它就像一个魅力。然后我想设置 x 等于 id 的第一个元素以获得起点。接下来我想构建一个向量“文件”来选择文件名。

真正的问题:如果我运行“pm”函数,R 会告诉我目标文件不存在。那么我做错了什么(显然我是)和什么?

非常感谢, C

【问题讨论】:

  • 我建议你把browser()放在pm的第一行,运行函数的定义,逐行执行代码。
  • 谢谢 - 我试过了,但看不到问题所在。
  • 究竟出了什么问题?如果我运行上面的代码(更改路径),它对我来说很好。如果上面的代码产生错误或警告,您可以复制它吗?如果上面的代码没有导致错误,但没有按照您的预期执行,请准确显示它的功能以及您希望它执行的操作。目前的描述建议您运行上面的代码,然后输入files 并得到错误Error: object 'files' not found。如果是这种情况,请重新阅读 Frank Schmitt 的回答。

标签: r csv input


【解决方案1】:

files 只是您在pm 函数中声明的局部变量。要在调用代码中使用结果,您应该将其分配给一个变量(我在这里使用了filelist):

filelist <- pm("specdata", 25:30)

【讨论】:

  • 首先很抱歉 - 我只是编程的新手。如果我想继续在函数中使用它,将files 作为局部变量是否就足够了?另外,我尝试在函数中声明 files 后直接调用它 - 这也不起作用。
猜你喜欢
  • 2018-10-27
  • 1970-01-01
  • 2021-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多