【发布时间】:2020-09-30 14:41:43
【问题描述】:
我正在使用 R 的数据检索包从 USGS 下载每日流量数据。下载每个站的数据后,我想将其添加到列表中。但是,当站的数据为空时,我想跳过它而不是将其添加到列表中,而是在命令窗口中写入“站 x 为空”。我正在使用以下代码:
siteNumber <- c("094985005","09498501","09489500","09489499","09498502","09511300","09498400","09498500","09489700","09500500","09489082","09510200","09489100","09490500","09510180","09494000","09490000","09489086","09489089","09489200","09489078","09510170","09493500","09493000","09498503","09497500","09510000","09509502","09509500","09492400","09492500","09497980","09497850","09492000","09497800","09510150","09499500","09489076","09489075","09489070","09510080","09510100","09509000","09510070","09489030","09489040","09499000","09496700","09509501","09496500","09496600","09494300","09490800","09496000","09498870","09491000","09495800","09508500","09497900","09494500","09495500","09494200","09498800","09497700","09508300","09495000","09507950","09508000","09507980","09506500","09507500","09507600","09507900","09507800","09507700","09507580","09506000","09505800","09505550","09502960","09503000","09505000","09505500","09503500","09503300","09505400","09505260","09505200","09505250","09505350","09505220","09504500","09505300","09502900","09504000","09504430","09504420","09502800","09504421","09503700","09502750","09503800","09503720","09512170","09512190","09512162","09512070","09512100","0949999999","09512200","09512165","09512406","09512184","09502000","09502500","09512405","09512403","0946666666","09501000","09512407","0948888888","09512060","09511500")
#siteNumber <- c("094985005","09498501")
str(siteNumber)
i <- 1
n <- length(siteNumber)
listDF <- list()
for (i in 1:n) {
Daily_Streamflow <- readNWISdv(siteNumber[i],parameterCd="00060", statCd="00003", "","")
if (nrow(Daily_Streamflow) > 0) {
siteINFO <- readNWISsite(siteNumber[i])
colnames(Daily_Streamflow[3]) <- "Date"
Daily_Streamflow$DailyStreamflow <- Daily_Streamflow$X_00060_00003
Daily_Streamflow <- Daily_Streamflow[,c(-1,-2,-4,-5)]
listDF[[i]] <- Daily_Streamflow
names(listDF)[i] <- siteNumber[i]
}
else{
name <- paste(siteNumber[i],"is empty")
print(name)
}
i <- i + 1
}
目前不工作,因为它还将空数据帧 (DailyStreamflow) 添加到列表中(即 [[28]] [[29]]),如下图所示
这个问题有什么解决办法吗?
【问题讨论】:
-
请做一个可重现的例子?
-
只需将它们过滤掉:
listDF <- Filter(NROW, listDF)。见How to delete empty data.frame in a list after subsetting in R。