我想在将掩码应用到多个文本文件(1,408)后创建一个均值向量。每个文件对应一个变量&从1950年到2013年,所以该变量有64个文件,有22个变量。这是我在R中应用的编码:
dataDir <- "C:\\dir\\"
patternC <-"Var1_"
filesSizeC = sort(list.files(dataDir,patternC))
for (i in 1:length(filesSizeC)) {
theData<-read.table(paste(dataDir,filesSizeC[i],sep=""),header=F,sep=",")
}
mask <- read.csv("http://dl.dropbox.com/s/2tbffe65i53afj1/examplemask.txt",
header=F)
product <- mask * theData
product[product == 0] <- NA
mean(product$V1, na.rm=TRUE)
这只为64个文本文件提供了一个值,即平均值。但是我想要在应用遮罩之后每个文本文件的均值。我修改了编码,试着给我一个每年手段的载体:
for (i in 1:length(filesSizeC)) {
theData<-read.table(paste(dataDir,filesSizeC[i],sep=""),header=F,sep="\t")
pdt <- mask*theData
if (i>0) {
theMeanValues <- c(theMeanValues,mean(pdt))
} else {
theMeanValues <- c(mean(pdt))
}
}
错误消息是:
Error: object 'theMeanValues' not found
我不太确定如何根据我的需要改变它。
基本上我想实现这个目标:
year | Var1_Masked_Mean | Var2_Masked_Mean | etc...
1950
1951
.
.
.
2013
我希望我的要求有意义!
由于
答案 0 :(得分:1)
R在您的示例中被1
而不是0
编入索引......
for (i in 1:length(filesSizeC)) {
所以改变这个
if (i>0) {
...
}
到
if (i>1) {
...
}
在循环的第一次迭代中i==1
,您将创建theMeanValues
变量。
答案 1 :(得分:0)
您必须使用以下内容初始化theMeanValues
theMeanValues <- vector(length=length(filesSizeC))
然后,您可以将每次迭代的结果mean(pdt)
存储到该向量中的位置:
theMeanValues[i] <- mean(pdt)
这样可以防止错误,并且比每次迭代theMeanValues
增长c()
向量更有效。
但是,听起来你可能想要初始化矩阵并从for
- 循环的每次迭代中提取一个向量......但是你的问题并不是很清楚。