所以,我已经创建了以下代码,让我得到一系列具有相同ID的行的意思,所以如果我输入pollutemean(目录,污染物,id),我得到一个数字结果,但是,如果我输入了一个识别多个ID的矢量,即:1:18,因为这里污染(目录,污染物,1:15),代码中断。我怎样才能让它适用于这两个选项?
CODE:
pollutemean <- function(directory,pollutant,id) {
alldata <- lapply(list.files(directory, full.names=TRUE),read.csv,header=TRUE)
alldatamerged<-do.call(rbind,alldata)
if (pollutant=="sulfate") {
allsulfatedata <- alldatamerged[c("Date","sulfate","ID")]
allsulfatedatabyid<-allsulfatedata[allsulfatedata$"ID"==id,]
completesulfatedatabyid<-na.omit(allsulfatedatabyid)
print(mean(completesulfatedatabyid$sulfate))
}
输出:
pollutemean(&#34; specdata&#34;&#34;硫酸&#34;,8) [1] 4.781354 pollutemean(&#34; specdata&#34;&#34;硫酸&#34; 1:8) [1] 4.252498 警告信息: 在allsulfatedata $ ID == id: 较长的物体长度不是较短物体长度的倍数
答案 0 :(得分:1)
试试这个:
allsulfatedatabyid<-allsulfatedata[allsulfatedata$ID %in% id, ]
或者:
allsulfatedatabyid<-allsulfatedata[id[which(id %in% allsulfatedata$ID)], ]