Desculpe se formatei incorretamente ou se o título não está correto, sou novo em R e estouro de pilha. Estou trabalhando com uma lista (chamada climas) que possui 20 quadros de dados (de cada província), cada um com colunas de ano, mês, dia e temperatura (junto com outras coisas). Procuro encontrar as linhas onde a temperatura está acima de um determinado limite, mas esse limite muda para cada província. Consegui usar o lapply para encontrar o limite para cada província, mas quando tento usar esses limites para encontrar as linhas nos dados em que a temperatura está acima do limite, a saída não está correta. Meu código retorna vários números, mas eles não parecem estar relacionados ao fato de serem maiores que o limite, e também não sei como fazer com que ele retorne a linha inteira em vez de apenas o valor da temperatura.
exemplo de lista climática:
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
Eu usei lapply para encontrar o limite,
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
mas quando tento encontrar as temperaturas que estão acima do limite, algo dá errado.
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
Existe uma maneira de escrever algo que retorne um subconjunto do quadro de dados de cada província onde a condição é que a temperatura seja maior que o limite? Obrigado!
O que está errado?
Sua
thres95
é uma lista comomas
x
é apenas um vetor. Então você terá um erro se aplicarx > thresh95
Opção de solução alternativa
Você pode executar o código abaixo (dados emprestados de @Edward )
o que dá
Você precisa
mapply
.Mas primeiro, sempre defina a semente ao simular dados.