【发布时间】:2015-07-31 22:44:09
【问题描述】:
在 for 循环中,我试图在我的数据框中的两列数据之间运行一个函数,并在循环的每个交互中移动到另一个数据集。我想将 for 循环的每个输出输出到一个答案向量中。
我无法通过以下错误(在我的代码下方列出),具体取决于我是否将 row.names = NULL 添加或删除到 data 部分以下代码(for循环的第4行):
** 编辑以包含目录引用,错误最终是:
corr <- function(directory, threshold = 0) {
source("complete.R")
上面的代码/我看不见的目录组织是我的错误所在
lookup <- complete("specdata")
setwd(paste0(getwd(),"/",directory,sep=""))
files <-list.files(full.names="TRUE") #read file names
len <- length(files)
answer2 <- vector("numeric")
answer <- vector("numeric")
dataN <- data.frame()
for (i in 1:len) {
if (lookup[i,"nobs"] > threshold){
# TRUE -> read that file, remove the NA data and add to the overall data frame
data <- read.csv(file = files[i], header = TRUE, sep = ",")
#remove incomplete
dataN <- data[complete.cases(data),]
#If yes, compute the correlation and assign its results to an intermediate vector.
answer<-cor(dataN[,"sulfate"],dataN[,"nitrate"])
answer2 <- c(answer2,answer)
}
}
setwd("../") 返回(答案2) }
1) read.table 中的错误(file = file, header = header, sep = sep, quote = quote, : 不允许重复的 'row.names'
对比)
2) [.data.frame(data, , 2:3) 中的错误:选择了未定义的列
我的尝试
- 直接引用列名“colA”
- 在 for 循环之前初始化 data 和 dataN 以清空 data.frames
- 将 answer2 初始化为空向量
- 更好地了解向量、矩阵和 data.frames 如何相互配合
** 谢谢!**
【问题讨论】:
-
您的代码不是很有效并且“R-ish”,但我认为它应该可以工作。您确定您正在阅读正确的 .csv 文件吗?
-
谢谢马拉。是的,它是一个正确的 csv 文件。 (逗号分隔的文本)您会推荐哪些效率更改?
标签: r for-loop vector directory-structure