Как я могу выбрать 2 переменные из списка данных в функции mapply или Map в R? - PullRequest
0 голосов
/ 14 марта 2019

У меня есть список фреймов данных, из которых 2 переменные: utmX и utmY будут использоваться для этого анализа.

В приведенном ниже коде я пытаюсь: 1) написать L.fun () 2) применить этот L.fun () к списку фреймов данных 3) результат построения каждого фрейма отдельно.

L.fun <- function(x, y){
  window <- ripras(x, y)
  p.patt <- ppp(x, y, window=window)
  L <- Lest(p.patt, correction="Ripley")
  return(L)
}

 data.list <- list(data1,data2,data3...data30)

 L.res <- mapply(L.fun, data.list$utmX, data.list$utmY)  # empty
 L.res <- mapply(L.fun, x$utmX, x$utmY) # x object not found
 L.res <- Map(L.fun, data.list)         # arg y is missing 
 plot(L.res)

Также я попытался сделать это, включив в функцию x и y, но она не работает.

 L.res <- lapply(data.list, function(x) {
    for(i in 1:nrow(x)){
       window <- ripras(x$utmX, x$utmY)
       p.patt <- ppp(x$utmX, x$utmY, window=window)
       x$L <- Lest(p.patt, correction="Ripley")
   }
   x
 })

Итак, мой вопрос, как я могу выбрать из списка данных 2 переменные, которые будут использоваться для функций mappy и Map?

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 15 марта 2019

Другая альтернатива:

coor <- lapply(data.list, function(x) cbind(x$utmX, x$utmY))
pats <- lapply(coor, as.ppp, W=ripras)
Lfuns <- anylapply(pats, Lest, correction="Ripley")
plot(Lfuns)
0 голосов
/ 14 марта 2019

Небольшое изменение вашей второй попытки должно сработать.

library(spatstat)

Сначала создайте список из 2 поддельных наборов данных:

data.list <- replicate(2, data.frame(utmX=runif(20), utmY=runif(20)), simplify = FALSE)

Просмотрите список и примените функцию L к каждому набору данных в списке:

L.res <- lapply(data.list, function(x) {
  window <- ripras(x$utmX, x$utmY)
  p.patt <- ppp(x$utmX, x$utmY, window=window)
  return(Lest(p.patt, correction="Ripley"))
})

Результатом является список двух функций L, как показано на графике:

plot.anylist(L.res)

Создано в 2019-03-14 пакетом Представление (v0.2.1)

...