获取错误:';尺寸数量不正确';执行R3.1.2中的函数时。这意味着什么?如何修复?
首先让我向您描述一下功能和我必须处理的内容 基本上,这个文件夹包含大约300个逗号分隔的值文件。每个文件都有一个与之关联的ID,如200.csv中的ID 200,并包含一些与硫酸盐和硝酸盐污染物有关的数据。我要做的是计算一个ID或一系列ID的这些粒子的平均值。例如,计算ID 5的硫酸盐平均值或计算ID 5:10的硫酸盐平均值 这是我处理数据的过程,但最后我得到了一个愚蠢的错误获取错误:';尺寸数量不正确';执行R3.1.2中的函数时。这意味着什么?如何修复?,r,data.table,R,Data.table,首先让我向您描述一下功能和我必须处理的内容 基本上,这个文件夹包含大约300个逗号分隔的值文件。每个文件都有一个与之关联的ID,如200.csv中的ID 200,并包含一些与硫酸盐和硝酸盐污染物有关的数据。我要做的是计算一个ID或一系列ID的这些粒子的平均值。例如,计算ID 5的硫酸盐平均值或计算ID 5:10的硫酸盐平均值 这是我处理数据的过程,但最后我得到了一个愚蠢的错误 我有这些.csv文件的列表向量 一个包含所有这些文件的主数据框架,我使用data.table包来实现这一点 描述功能的时
pollutantmean <- function(spectate,pollutant,id)
specdata <- rbindlist(filelist)
setkey(specdata, ... = 'ID) ## because ID needs to be sorted out
for(i in id)
if(pollutant == 'sulphate'){
return(mean(specdata[, 'sulphate'], na.rm = TRUE))
}else{
if(pollutant == 'nitrate'){
return(mean(specdata([, nitrate], na.rm = TRUE))
}else{
print('NA')}
}
}
polluantmean我认为这类任务中的plyr
功能将非常有用。
更具体地说,我认为您应该使用ldply
和定制函数
ldply
:在列表中作为输入,在数据帧中作为输出。列表应为目录内容,输出为每个csv文件的摘要值
您的示例不完全可复制,因此下面的代码只是一个示例结构:
require(plyr)
require(stringr)
files_to_extract <- list.files("dir_with_files", pattern=".csv$")
files_to_extract <- str_sub_replace(files_to_extract, ".csv$", "")
fn <- function(this_file_name){
file_loc <- paste0(dir_with_files, "/", this_file_name, ".csv")
full_data <- read.csv(file_loc)
out <- data.frame(
variable_name=this_file_name,
variable_summary= mean(full_data$variable_to_summarise)
)
return(out)
}
summarised_output <- ldply(files_to_extract, fn)
require(plyr)
要求(stringr)
文件\u至\u摘录编辑:对输入错误表示歉意。它是“specdata”,而不是spectate。Noob自动更正:X这一行中有两个打字错误:setkey(specdata,…='ID)
。