我得到的"名称与以前的名字不匹配"合并2个数据帧时出错。但是,它们的名称完全相同。我把**放在我定义数据帧的两个地方,但它们是相同的。到底是怎么回事?谢谢!
确切错误: match.names(clabs,names(xi))中的错误:名称与以前的名称不匹配
corr <- function(directory, threshold = 0) {
#store data frame that holds sulfate amount and nitrate amount that meet threshold and are complete cases
**data <- data.frame(sulfate = numeric(0), nitrate = numeric(0))**
#set working directory
setwd(directory)
#get file names
myfiles <- list.files(pattern = "csv")
#loop through files
for(i in 1:332) {
#read each file
current_dataset <- read.csv(myfiles[i])
#check if there are enough compelte cases to meet threshold
if(sum(complete.cases(current_dataset)) > threshold) {
#get complete cases
complete_cases <- current_dataset[complete.cases(current_dataset), ]
#add sulfate and nitrate info to table
**data <- rbind(data, data.frame(sulfate = complete_cases$sulfate[i], nitrate = complete_cases$nitrate)[i])**
}
}
#get correlation
cor(data)
}
答案 0 :(得分:0)
你没有给出一个可重复的例子,所以我猜测,但我会尝试
...
for(i in seq_along(myfiles)) {
#read each file
current_dataset <- read.csv(myfiles[i])
#check if there are enough complete cases to meet threshold
if(sum(cc <- complete.cases(current_dataset)) > threshold) {
#get complete cases
complete_cases <- current_dataset[cc, ]
#add sulfate and nitrate info to table
data <- rbind(data, complete_cases[,c("sulfate","nitrate")])
}
}
或
alldat <- lapply(myfiles,read.csv)
ccdat <- lapply(alldat,function(x) x[complete.cases(x),])
ccdat2 <- ccdat[sapply(ccdat,nrow)>threshold]
ccdat3 <- lapply(ccdat2,function(x) x[,c("sulfate","nitrate")])
final <- do.call(rbind,ccdat3)