在R中执行函数

时间:2015-11-17 06:55:55

标签: r function

我有一个函数可以从许多.csv文件中创建一个表,然后对该表执行某些操作。该函数看起来像这样:

functionName <- function(directory) {

  tempTable <- list.files(directory, all.files = TRUE)
  allFilesTable <- lapply(tempTable, read.csv)

  doSomethingWithNonNAValues(allFilesTable, na.rm = TRUE)
}

当我在控制台上运行以下行时,我得到了我想要的行为:

  > tempTable <- list.files(getwd(), all.files = TRUE)
  > allFilesTable <- lapply(tempTable, read.csv)
  > doSomethingWithNonNAValues(allFilesTable, na.rm = TRUE)

然而,当我尝试使用上面的FUNCTION做同样的事情时,我收到一个错误:

> functionName(getwd())
 Error in read.table(file = file, header = header, sep = sep, quote = quote,  : 
  no lines available in input 
5 stop("no lines available in input") 
4 read.table(file = file, header = header, sep = sep, quote = quote, 
    dec = dec, fill = fill, comment.char = comment.char, ...) 
3 FUN(X[[i]], ...) 
2 lapply(tempTable, read.csv) 
1 functionName(getwd()) 

为什么命令在控制台中起作用,但在从函数调用时却不起作用?

1 个答案:

答案 0 :(得分:1)

我修改了这个:

functionName <- function(directory) {
  tempTable <- list.files(directory, all.files = TRUE)
etc.

到此:

functionName <- function(directory) {
     tempTable <- list.files(getwd(), pattern = ".csv")
etc.
}

[Patric]略微修改代码,前面的代码列出了包含非“.csv”文件的所有文件,而不是“read.csv”中的错误输出。修改后的代码仅列出 “.csv”文件使其运行良好。