我正在尝试在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语言的初学者,所以,如果有任何方法可以解决这个问题,或者从文件夹中读取每个文件并单独操作,我会很高兴。
答案 0 :(得分:1)
assign
用于做到这一点,&#34;分配&#34;变量值(up to semantics)。我怀疑你想要
fileValues <- read.csv(fileList[i])