我无法访问数据框

I can not access dataframe

使用以下代码,我将多个 csv 文件读入数据帧。

setwd("/path/to/files")

filenames <- gsub("\.csv$","", list.files(pattern="\.csv$"))

for(i in filenames){
  assign(i, read.csv(paste(i, ".csv", sep="")))
}

当我尝试在以下代码中访问它们时

for (i in filenames) {
    imanDavenportTest(i)
}

我收到以下错误

Error in apply(data, MARGIN = 1, FUN = f) : 
  dim(X) must have a positive length

有人可以帮助我吗?

您的 "filenames" 只是字符串,表示从 read.csv 导入的数据的名称。您需要从这些命名对象中 get 数据

所以尝试:

for(i in filenames){
  imanDavenportTest(get(i))
}

爱德华的回答是正确的。但是我想添加一个注释,因为您正在以一种非常复杂的方式处理这个问题并且没有充分利用 R。

没有理由在这里使用 assign。您可以一次读取所有数据,并将结果存储为单个对象(列表),而不是让 N 个对象污染您的工作区。例如:

# read files in your directory
file_ls <- list.files('.', pattern=".csv$")

# use lapply to read each file and create a list of data frames
data_ls <- lapply(file_ls, read.csv)

# perform the test on each element of the list
lapply(data_ls, imanDavenportTest)

assign 通常被来自具有全局变量的语言的人们采用,但它没有利用 R 的面向对象的函数式编程。恕我直言,以这种方式使用 assign 会创建难以阅读且易维护的代码。