抱歉,如果我的格式不正确或者标题不太正确,我是 R 和 stack overflow 的新手。我正在使用一个列表(称为气候),它有 20 个数据框(来自每个省份),每个数据框都有年、月、日和温度列(以及一些其他内容)。我想找到温度高于某个阈值的行,但这个阈值因每个省份而异。我已经能够使用 lapply 来找到每个省份的阈值,但是当我尝试使用这些阈值来查找数据中温度高于阈值的行时,输出不正确。我的代码确实返回了一堆数字,但它们似乎与大于阈值无关,而且我也不知道如何让它返回整行而不是仅仅返回温度值。
气候列表示例:
A <- data.frame("D" = c(1:30), "T" = c(sample(10:30, size = 30, replace = TRUE)))
B <- data.frame("D" = c(1:30), "T" = c(sample(4:22, size = 30, replace = TRUE)))
C <- data.frame("D" = c(1:30), "T" = c(sample(14:35, size = 30, replace = TRUE)))
climate <- list("Alist" = A, "Blist" = B, "Clist" = C)
climate
我用过 lapply 来找到阈值,
thresh95 <- lapply(lapply(
climate, `[[`, 2), # this one takes my list of climate data and selects the T column for all provinces
quantile, probs = c(0.95), na.rm = TRUE) # this one takes the previous list and finds 95th percentile value
thresh95
但是当我尝试找到高于阈值的温度时,出现了问题。
tmax95 <- lapply(lapply(climate, `[[`, 2), # this one takes my list of climate data and selects the T column for all provinces
function(x) x[which(x>thresh95)])# this one takes my list of climate data and selects the temps that are greater than the threshold
tmax95
有没有办法编写一些东西来返回每个省份数据框的子集,条件是温度高于阈值?谢谢!