【发布时间】:2014-10-09 06:53:00
【问题描述】:
我有一个数据框“表”,其中有一列名为“ID”。 “ID”的值从 1 到 100。数据框还有一个名为“weight”的列。
我有一个函数“calc_mean”,它有一个变量来选择“ID”:
calc_mean <- function(id=1:100)
当我调用我的函数时,我希望能够获取这个“ID”的一个子集,例如:
calc_mean(30:35)
在我的函数中编写以下代码时,这必须计算我的列“权重”的平均值:
mean(table$weight[,id])
但我收到以下错误:
[1] 不适用 警告信息: 在 mean.default(table$weight[, id]) 中: 参数不是数字或逻辑:返回 NA
怎么了?
或者,如果我可以将此数据框“table”的一个子集制作成另一个名为“table2”的数据框,其中只有我感兴趣的 ID,我会很高兴。然后我会想到以下代码:
for(i in id){
table2 <- table[table$ID == i,]
}
接着是:
mean(table2$weight)
但是,这给了我错误:
[1] 不适用 警告信息: 在 mean.default(table2$weight) 中: 参数不是数字或逻辑:返回 NA
这里有什么问题?
================================================ ===============================
抱歉,由于某些原因,我想先隐藏我的真实代码,但现在将显示真实代码:
pollutantmean <- function(dummy_dir, pollutant, id = 1:332) {
pollutant <- c("sulfate", "nitrate")
directory <- "C:\\Users\\kieken\\Dropbox\\science\\R programming\\specdata"
setwd(directory)
files <- list.files(directory)
data.list <- lapply(files, read.csv)
data.cat <- do.call(rbind, data.list)
good <- complete.cases(data.cat)
data.clean <- data.cat[good,]
data.ID <- subset(data.clean, ID %in% id)
mean(data.ID[,pollutant])
}
pollutantmean("specdata", "nitrate", 70:72)
这段代码给了我以下错误:
[1] 不适用 警告信息: 在 mean.default(data.ID[, 污染物]) 中: 参数不是数字或逻辑:返回 NA
【问题讨论】:
-
我注意到你没有发布函数。
-
请提供一个可重现的例子。如果您不发布我们重现问题所需的内容,则可能无法诊断您的问题。
-
我删除了以下代码,它现在可以工作了:污染物
标签: r variables dataframe subset