在函数中使用带有 read.csv 的粘贴

using paste with read.csv inside a function

我想创建一个使用 read.csv()paste() 的函数。以下代码一般有效

df <- read.csv(paste("/file name", 2010, ".CSV", sep = ""), header = TRUE)

但是当我把它放在一个像这样的函数中时

myfunction <- function(date){df <- read.csv(
                             paste("/file name", date, ".CSV", sep = ""),
                             header = TRUE)
                            }

命令 myfunction(2010) 无法生成输出,并且不会导致任何错误或警告。我做错了什么?

您需要使用 <<- 而不是 <-

myfunction <- function(date){df <<- read.csv(
                             paste("/file name", date, ".CSV", sep = ""),
                             header = TRUE)
                            }

或者你写:

myfunction <- function(date){read.csv(
                             paste("/file name", date, ".CSV", sep = ""),
                             header = TRUE)
                            }
df <- myfunction(2000)

Return 来自函数的数据帧

myfunction <- function(date){
   df <- read.csv(paste("/file name", date, ".CSV", sep = ""),header = TRUE)
   return(df)
}

并赋值

df <- myfunction(2010)

在 R 中,函数的最后一行无论如何都会自动返回,所以这也应该有效。

myfunction <- function(date){
   read.csv(paste("/file name", date, ".CSV", sep = ""),header = TRUE)
}

你总是可以使用 sprintf

myfunction <- function(date){
  df <- read.csv(sprintf('/filename%s.csv',date))
  return(df)
}
csv <- myfunction(date)

如果你有很多约会对象

ListDates <- as.list(dates)
ListOfCsvs <- lapply(ListDates,myfunction)

编辑:我没有明确表示您的问题已由 myfunction()

中的 return(df) 解决