循环功能可将平均值捕获到新数据帧返回子集错误中

时间:2018-10-06 20:04:10

标签: r for-loop dataframe

我有很多文件,但让我们从文件1:N开始。每个文件中都有数据框。每个文件都包含相同的标头,但行号不同,其中包括某些错误和缺少的行号。我想从每个文件的特定列(temp_c)中获取平均值,并从中创建一个新的列表/数据框。下面的“ dat”是来自文件内容之一的一个示例。请帮我一下。

head(dat)
  X pres_hpa hght_m temp_c dwpt_c relh_pct mixr_g_kg drct_deg sknt_knot thta_k thte_k thtv_k
1 1   1008.0     16   24.0   19.1       74     14.00      230         7  296.5  337.1  299.0
2 2   1007.8     18   24.0   19.1       74     14.00      230         7  296.5  337.1  299.0
3 3   1000.0     88   23.8   18.8       74     13.85      229         8  296.9  337.2  299.4
4 4    975.7    304   24.4   17.8       67     13.34      225        10  299.7  338.9  302.1
5 5    970.0    355   24.6   17.6       65     13.23      224        11  300.4  339.4  302.7
6 6    909.5    914   21.7   14.7       64     11.67      210        19  302.9  337.8  305.1
        date from_hr to_hr
1 1981-11-01       0     0
2 1981-11-01       0     0
3 1981-11-01       0     0
4 1981-11-01       0     0
5 1981-11-01       0     0
6 1981-11-01       0     0  

y = 1978
N <- 3
for (i in 1:N) {
  yr = y +(as.numeric(i))
  yr = as.character(yr)
  p <- paste0("c:/Users/climatology/yr/",yr,".csv")
  print(p)
  #read.csv
  dat <- read.csv(p,header = TRUE, stringsAsFactors = F)
  #filter
  dat_sub <- filter(dat, pres_hpa == 1000)
  dat_sub <- filter(dat_sub, hght_m > 0)
  dat_sub <- filter(dat_sub, temp_c > 0)
  #grab Mean Value into data frame
  #m = sapply(dat_sub$temp_c,function(i)mean(dat_sub$temp_c))
  data[i] = data.frame(index = i, year = as.numeric(yr), temp = 
  mean(dat_sub$temp_c))
}

Error in data[i] <- data.frame(index = i, year = as.numeric(yr), temp = mean(dat_sub$temp_c)) : 
  object of type 'closure' is not subsettable

1 个答案:

答案 0 :(得分:0)

数据不可子集,因为它是一个函数。您尝试选择数据的第一项,但是数据未在代码中定义(并且是函数btw)