【问题标题】:Loop function to grab mean value into new data frame return subset error将平均值抓取到新数据帧中的循环函数返回子集错误
【发布时间】:2018-10-06 20:04:10
【问题描述】:

我有大量文件,但让我们从文件 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

【问题讨论】:

  • 你需要在for循环之前定义data&lt;-list()。然后data[[i]]&lt;-data.frame()。我猜。

标签: r for-loop dataframe


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2015-05-29
    • 2018-01-05
    • 2020-08-05
    • 2019-08-19
    • 2018-07-07
    • 2022-01-22
    • 2020-04-07
    • 2021-12-07
    • 1970-01-01
    相关资源
    最近更新 更多