R - 获取警告:“只有第一个元素用作变量名”

时间:2016-09-11 23:28:47

标签: r function warnings assign

我正在尝试在for循环中使用“assign”函数,将文件的值赋给一个变量。

当我调用该函数时,它会带来正确的答案,但最后它会给我以下警告信息:

 In assign(fileList, read.csv(fileList[i])) :
 only the first element is used as variable name

如果我运行> corr(“specdata”,129)我可以看到正确的答案,它可以打印所有正确的值,但是如果我将值分配给任何变量,例如,它表示此变量为“NULL”。一个例子:

cr <- corr("specdata", 150) 
head(cr)
NULL

它将为我提供符合此条件的所有值,但似乎无法将值传递给“cr”。其他例子:

> class(cr)
[1] "NULL"
> cr
NULL

我目前正在使用的代码,如果有帮助:

corr <- function(directory, threshold){
    if (directory == "specdata"){ 
        setwd("C:/Users/User/Downloads/specdata")

        fileList <- list.files(pattern="*.csv")
        for (i in 1:length(fileList)){
            fileValues <- assign(fileList, read.csv(fileList[i]))
            okValues <- na.omit(fileValues)
            completeCases <- sum(complete.cases(okValues))
            if (completeCases > threshold) {
                sulfate <- okValues["sulfate"]
                nitrate <- okValues["nitrate"]
                correlation <- cor(sulfate, nitrate,  use="complete.obs", method=c("pearson", "kendall", "spearman")) 
                #print(correlation)

            }

            else if (completeCases <= threshold){
                #print("0")
            }

            i = i+1
        }
    }

    else {
        print("There's no such directory")
    }

}

我是R语言的初学者,所以,如果有任何方法可以解决这个问题,或者从文件夹中读取每个文件并单独操作,我会很高兴。

1 个答案:

答案 0 :(得分:1)

assign用于做到这一点,&#34;分配&#34;变量值(up to semantics)。我怀疑你想要

fileValues <- read.csv(fileList[i])