Когда вы разделите данные по нулям,
spl1 <- split(GL, GL$well)
lapply
будет выглядеть следующим образом.
lapply(spl1, function(x) acf(x$value))
Хотя мы могли бы сделать это несколько лучше.
Когда мы выполняем lapply
по номеру списка, мы получаем «счетчик», с помощью которого мы можем получить доступ к именам списка, чтобы вставить вместе информационные заголовки.С помощью par(mfrow=c(<rows>, <columns>))
мы можем установить расположение участков.
par(mfrow=c(1, 2))
lapply(seq_along(spl1), function(x) acf(spl1[[x]]$value,
main=paste0("well ", names(spl1)[x], ", ",
"area ", unique(spl1[[x]]$area))))
Результат
Это, вероятно, придется адаптировать в соответствии с тем, как ваши колодцы разделены на группы.
( В качестве sidenote: Лучше избегать перезаписи имен функций. Вы используете split()
и даете результату то же имя, что и функция, которая может вызватьпутаница, как у вас, так и у Р. Другие популярные кандидаты data
, df
, table
. Мы всегда можем быстро проверить с помощью ?
, является ли имя "свободным", например, ?df
.)
Данные
# result of `dput(GL)`
GL <- structure(list(well = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L), .Label = c("101", "684"), class = "factor"), year = structure(c(1L,
1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 2L,
2L, 2L, 2L, 3L, 3L, 3L, 3L), .Label = c("1994", "1995", "1996"
), class = "factor"), month = structure(c(3L, 2L, 4L, 1L, 3L,
2L, 4L, 1L, 3L, 2L, 4L, 1L, 3L, 2L, 4L, 1L, 3L, 2L, 4L, 1L, 3L,
2L, 4L, 1L), .Label = c("Apr", "Feb", "Jan", "Mar"), class = "factor"),
value = structure(c(3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L,
1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L), .Label = c("8.12",
"8.21", "8.53", "8.62"), class = "factor"), area = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("H", "R"), class = "factor")), row.names = c(NA,
-24L), class = "data.frame")