#r #function #tidyr #spatstat
Вопрос:
Я пытаюсь создать список ландшафтных объектов, которые были сгруппированы в соответствии с переменной, называемой sim. В идеале мне нужен список с ландшафтными объектами, который можно назвать т. е.
[[1]]
Planar point pattern: 100 points
window: rectangle = [0, 1000] x [0, 1000] units
[[2]]
Planar point pattern: 100 points
window: rectangle = [0, 1000] x [0, 1000] units
Код, который я пробовал до сих пор, таков:
library(tidyr)
library(spatstat)
set.seed(23)
x<-runif(1000)*1000
y<-runif(1000)*1000
sim<-rep(1:10,100)
coordinates<-data.frame(x,y,sim)
coordinates<-coordinates[order(sim),]
emptylist<-vector(mode="list",length=10)
metriccalculation<-function(x,y){
emptylist<-ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000)))
}
coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y))
Это возвращает ошибку:
Error in get(as.character(FUN), mode = "function", envir = envir) :
object 'coordinates' of mode 'function' was not found
ПРАВКА 1: Я попытался добавить пустой список в качестве переменной в функцию metriccalculation, вернув ту же ошибку.
metriccalculation<-function(x,y,r){
r<-ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000)))
}
coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y,emptylist))
ПРАВКА 2: Я попытался добавить дополнение к функции, чтобы список был заполнен. Это также привело к той же ошибке.
emptylist<-vector(mode="list",length=10)
metriccalculation<-function(x,y,r){
r<-append(r,(ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000)))))
}
coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y,emptylist))
ПРАВКА 3:
Хорошо, я проверил в Интернете, и есть возможный способ передачи нескольких переменных через функцию apply. Это приводит к:
coordinates%>%group_by(sim)%>%apply(coordinates,metriccalculation,x=coordinates$x,y=coordinates$y,r=emptylist)
И новая ошибка,
Error in d[-MARGIN] : invalid subscript type 'list'
Комментарии:
1. Что вы подразумеваете под списком, сгруппированным по переменной sim? Что такое сгруппированный список? Вы можете создать вложенный список, если хотите, такой, чтобы в нем было 10 записей (соответствующих сим 1 — 10), а затем у каждой из этих записей был список шаблонов точек. Это то, чего ты хочешь? То, что у вас сейчас есть, кажется очень запутанным. Это не
coordinates
кадр data.frame (конец списка) длиной 3, и ваш вызов lapply затем повторяется по этим 3 столбцам (x, y, sim), что, скорее всего, не то, что вы хотите. Четко объясните, чего вы хотите в качестве конечного результата, и мы, возможно, сможем вам помочь.2. «Вы можете создать вложенный список, если хотите, такой, чтобы в нем было 10 записей (соответствующих сим 1 — 10), а затем у каждой из этих записей был список шаблонов точек. Это то, чего ты хочешь?» Да, именно этого я и хочу. «Не то, чтобы координаты были кадром data.frame (конечным, следовательно, списком) длиной 3, и ваш вызов lapply затем повторяется по этим 3 столбцам (x, y, sim), что, скорее всего, не то, что вы хотите. «Я не понимаю, как это не data.frame, потому что я создал его со строкой ` координаты<-data.frame(x,y,sim) координаты Но я вижу, что это не то, чего я хочу.
3. A
data.frame
-это просто специальноеlist
приложение, в котором все элементы имеют одинаковую длину. Тоcoordinates
же самое относится и к а, иdata.frame
к аlist
. В приведенном ниже ответе я не составляю вложенный список, а просто простой список, в котором каждый элемент представляет собой одноточечный шаблон. Я думаю, что это то, что вы хотите, но если у вас есть более одного шаблона точек для каждого значения sim — карты, это, вероятно, не так.
Ответ №1:
Если вам действительно просто нужен список из 10 точечных шаблонов со 100 однородными случайными точками, вы можете сделать:
library(spatstat)
rslt <- runifpoint(100, win = square(1000), nsim = 10)
rslt # Is a list with extra spatstat class `solist` (spatial object list)
#> List of point patterns
#>
#> Simulation 1:
#> Planar point pattern: 100 points
#> window: rectangle = [0, 1000] x [0, 1000] units
#>
#> Simulation 2:
#> Planar point pattern: 100 points
#> window: rectangle = [0, 1000] x [0, 1000] units
#>
#> Simulation 3:
#> Planar point pattern: 100 points
#> window: rectangle = [0, 1000] x [0, 1000] units
#>
#> Simulation 4:
#> Planar point pattern: 100 points
#> window: rectangle = [0, 1000] x [0, 1000] units
#>
#> Simulation 5:
#> Planar point pattern: 100 points
#> window: rectangle = [0, 1000] x [0, 1000] units
#>
#> Simulation 6:
#> Planar point pattern: 100 points
#> window: rectangle = [0, 1000] x [0, 1000] units
#>
#> Simulation 7:
#> Planar point pattern: 100 points
#> window: rectangle = [0, 1000] x [0, 1000] units
#>
#> Simulation 8:
#> Planar point pattern: 100 points
#> window: rectangle = [0, 1000] x [0, 1000] units
#>
#> Simulation 9:
#> Planar point pattern: 100 points
#> window: rectangle = [0, 1000] x [0, 1000] units
#>
#> Simulation 10:
#> Planar point pattern: 100 points
#> window: rectangle = [0, 1000] x [0, 1000] units
plot(rslt)
Если вы хотите разделить свой data.frame с координатами на 10 различных
шаблонов точек, которые вы можете сделать (повторно используя свой код):
set.seed(23) x<-runif(1000)*1000 y<-runif(1000)*1000 sim<-rep(1:10,100) coordinates<-data.frame(x,y,sim) coord_list <- split(coordinates[,c("x", "y")], coordinates$sim) rslt2 <- lapply(coord_list, as.ppp, W = square(1000)) rslt2 # Is a usual list #> #r #function #tidyr #spatstat
Вопрос:
Я пытаюсь создать список ландшафтных объектов, которые были сгруппированы в соответствии с переменной, называемой sim. В идеале мне нужен список с ландшафтными объектами, который можно назвать т. е.[[1]] Planar point pattern: 100 points window: rectangle = [0, 1000] x [0, 1000] units [[2]] Planar point pattern: 100 points window: rectangle = [0, 1000] x [0, 1000] units
Код, который я пробовал до сих пор, таков:
library(tidyr) library(spatstat) set.seed(23) x<-runif(1000)*1000 y<-runif(1000)*1000 sim<-rep(1:10,100) coordinates<-data.frame(x,y,sim) coordinates<-coordinates[order(sim),] emptylist<-vector(mode="list",length=10) metriccalculation<-function(x,y){ emptylist<-ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y))
Это возвращает ошибку:
Error in get(as.character(FUN), mode = "function", envir = envir) : object 'coordinates' of mode 'function' was not found
ПРАВКА 1: Я попытался добавить пустой список в качестве переменной в функцию metriccalculation, вернув ту же ошибку.
metriccalculation<-function(x,y,r){ r<-ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y,emptylist))
ПРАВКА 2: Я попытался добавить дополнение к функции, чтобы список был заполнен. Это также привело к той же ошибке.
emptylist<-vector(mode="list",length=10) metriccalculation<-function(x,y,r){ r<-append(r,(ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y,emptylist))
ПРАВКА 3:
Хорошо, я проверил в Интернете, и есть возможный способ передачи нескольких переменных через функцию apply. Это приводит к:
coordinates%>%group_by(sim)%>%apply(coordinates,metriccalculation,x=coordinates$x,y=coordinates$y,r=emptylist)
И новая ошибка,
Error in d[-MARGIN] : invalid subscript type 'list'
Комментарии:
1. Что вы подразумеваете под списком, сгруппированным по переменной sim? Что такое сгруппированный список? Вы можете создать вложенный список, если хотите, такой, чтобы в нем было 10 записей (соответствующих сим 1 - 10), а затем у каждой из этих записей был список шаблонов точек. Это то, чего ты хочешь? То, что у вас сейчас есть, кажется очень запутанным. Это не
coordinates
кадр data.frame (конец списка) длиной 3, и ваш вызов lapply затем повторяется по этим 3 столбцам (x, y, sim), что, скорее всего, не то, что вы хотите. Четко объясните, чего вы хотите в качестве конечного результата, и мы, возможно, сможем вам помочь.2. "Вы можете создать вложенный список, если хотите, такой, чтобы в нем было 10 записей (соответствующих сим 1 - 10), а затем у каждой из этих записей был список шаблонов точек. Это то, чего ты хочешь?" Да, именно этого я и хочу. "Не то, чтобы координаты были кадром data.frame (конечным, следовательно, списком) длиной 3, и ваш вызов lapply затем повторяется по этим 3 столбцам (x, y, sim), что, скорее всего, не то, что вы хотите. "Я не понимаю, как это не data.frame, потому что я создал его со строкой ` координаты<-data.frame(x,y,sim) координаты Но я вижу, что это не то, чего я хочу.
3. A
data.frame
-это просто специальноеlist
приложение, в котором все элементы имеют одинаковую длину. Тоcoordinates
же самое относится и к а, иdata.frame
к аlist
. В приведенном ниже ответе я не составляю вложенный список, а просто простой список, в котором каждый элемент представляет собой одноточечный шаблон. Я думаю, что это то, что вы хотите, но если у вас есть более одного шаблона точек для каждого значения sim - карты, это, вероятно, не так.Ответ №1:
Если вам действительно просто нужен список из 10 точечных шаблонов со 100 однородными случайными точками, вы можете сделать:
library(spatstat) rslt <- runifpoint(100, win = square(1000), nsim = 10) rslt # Is a list with extra spatstat class `solist` (spatial object list) #> List of point patterns #> #> Simulation 1: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 2: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 3: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 4: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 5: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 6: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 7: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 8: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 9: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 10: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units plot(rslt)
Если вы хотите разделить свой data.frame с координатами на 10 различных
шаблонов точек, которые вы можете сделать (повторно используя свой код):1`
#> Planar point pattern: 100 points
#> window: rectangle = [0, 1000] x [0, 1000] units
#>
#>#r #function #tidyr #spatstat
Вопрос:
Я пытаюсь создать список ландшафтных объектов, которые были сгруппированы в соответствии с переменной, называемой sim. В идеале мне нужен список с ландшафтными объектами, который можно назвать т. е.
[[1]] Planar point pattern: 100 points window: rectangle = [0, 1000] x [0, 1000] units [[2]] Planar point pattern: 100 points window: rectangle = [0, 1000] x [0, 1000] units
Код, который я пробовал до сих пор, таков:
library(tidyr) library(spatstat) set.seed(23) x<-runif(1000)*1000 y<-runif(1000)*1000 sim<-rep(1:10,100) coordinates<-data.frame(x,y,sim) coordinates<-coordinates[order(sim),] emptylist<-vector(mode="list",length=10) metriccalculation<-function(x,y){ emptylist<-ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y))
Это возвращает ошибку:
Error in get(as.character(FUN), mode = "function", envir = envir) : object 'coordinates' of mode 'function' was not found
ПРАВКА 1: Я попытался добавить пустой список в качестве переменной в функцию metriccalculation, вернув ту же ошибку.
metriccalculation<-function(x,y,r){ r<-ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y,emptylist))
ПРАВКА 2: Я попытался добавить дополнение к функции, чтобы список был заполнен. Это также привело к той же ошибке.
emptylist<-vector(mode="list",length=10) metriccalculation<-function(x,y,r){ r<-append(r,(ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y,emptylist))
ПРАВКА 3:
Хорошо, я проверил в Интернете, и есть возможный способ передачи нескольких переменных через функцию apply. Это приводит к:
coordinates%>%group_by(sim)%>%apply(coordinates,metriccalculation,x=coordinates$x,y=coordinates$y,r=emptylist)
И новая ошибка,
Error in d[-MARGIN] : invalid subscript type 'list'
Комментарии:
1. Что вы подразумеваете под списком, сгруппированным по переменной sim? Что такое сгруппированный список? Вы можете создать вложенный список, если хотите, такой, чтобы в нем было 10 записей (соответствующих сим 1 - 10), а затем у каждой из этих записей был список шаблонов точек. Это то, чего ты хочешь? То, что у вас сейчас есть, кажется очень запутанным. Это не
coordinates
кадр data.frame (конец списка) длиной 3, и ваш вызов lapply затем повторяется по этим 3 столбцам (x, y, sim), что, скорее всего, не то, что вы хотите. Четко объясните, чего вы хотите в качестве конечного результата, и мы, возможно, сможем вам помочь.2. "Вы можете создать вложенный список, если хотите, такой, чтобы в нем было 10 записей (соответствующих сим 1 - 10), а затем у каждой из этих записей был список шаблонов точек. Это то, чего ты хочешь?" Да, именно этого я и хочу. "Не то, чтобы координаты были кадром data.frame (конечным, следовательно, списком) длиной 3, и ваш вызов lapply затем повторяется по этим 3 столбцам (x, y, sim), что, скорее всего, не то, что вы хотите. "Я не понимаю, как это не data.frame, потому что я создал его со строкой ` координаты<-data.frame(x,y,sim) координаты Но я вижу, что это не то, чего я хочу.
3. A
data.frame
-это просто специальноеlist
приложение, в котором все элементы имеют одинаковую длину. Тоcoordinates
же самое относится и к а, иdata.frame
к аlist
. В приведенном ниже ответе я не составляю вложенный список, а просто простой список, в котором каждый элемент представляет собой одноточечный шаблон. Я думаю, что это то, что вы хотите, но если у вас есть более одного шаблона точек для каждого значения sim - карты, это, вероятно, не так.Ответ №1:
Если вам действительно просто нужен список из 10 точечных шаблонов со 100 однородными случайными точками, вы можете сделать:
library(spatstat) rslt <- runifpoint(100, win = square(1000), nsim = 10) rslt # Is a list with extra spatstat class `solist` (spatial object list) #> List of point patterns #> #> Simulation 1: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 2: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 3: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 4: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 5: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 6: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 7: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 8: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 9: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 10: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units plot(rslt)
Если вы хотите разделить свой data.frame с координатами на 10 различных
шаблонов точек, которые вы можете сделать (повторно используя свой код):2`
#> Planar point pattern: 100 points
#> window: rectangle = [0, 1000] x [0, 1000] units
#>
#>#r #function #tidyr #spatstat
Вопрос:
Я пытаюсь создать список ландшафтных объектов, которые были сгруппированы в соответствии с переменной, называемой sim. В идеале мне нужен список с ландшафтными объектами, который можно назвать т. е.
[[1]] Planar point pattern: 100 points window: rectangle = [0, 1000] x [0, 1000] units [[2]] Planar point pattern: 100 points window: rectangle = [0, 1000] x [0, 1000] units
Код, который я пробовал до сих пор, таков:
library(tidyr) library(spatstat) set.seed(23) x<-runif(1000)*1000 y<-runif(1000)*1000 sim<-rep(1:10,100) coordinates<-data.frame(x,y,sim) coordinates<-coordinates[order(sim),] emptylist<-vector(mode="list",length=10) metriccalculation<-function(x,y){ emptylist<-ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y))
Это возвращает ошибку:
Error in get(as.character(FUN), mode = "function", envir = envir) : object 'coordinates' of mode 'function' was not found
ПРАВКА 1: Я попытался добавить пустой список в качестве переменной в функцию metriccalculation, вернув ту же ошибку.
metriccalculation<-function(x,y,r){ r<-ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y,emptylist))
ПРАВКА 2: Я попытался добавить дополнение к функции, чтобы список был заполнен. Это также привело к той же ошибке.
emptylist<-vector(mode="list",length=10) metriccalculation<-function(x,y,r){ r<-append(r,(ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y,emptylist))
ПРАВКА 3:
Хорошо, я проверил в Интернете, и есть возможный способ передачи нескольких переменных через функцию apply. Это приводит к:
coordinates%>%group_by(sim)%>%apply(coordinates,metriccalculation,x=coordinates$x,y=coordinates$y,r=emptylist)
И новая ошибка,
Error in d[-MARGIN] : invalid subscript type 'list'
Комментарии:
1. Что вы подразумеваете под списком, сгруппированным по переменной sim? Что такое сгруппированный список? Вы можете создать вложенный список, если хотите, такой, чтобы в нем было 10 записей (соответствующих сим 1 - 10), а затем у каждой из этих записей был список шаблонов точек. Это то, чего ты хочешь? То, что у вас сейчас есть, кажется очень запутанным. Это не
coordinates
кадр data.frame (конец списка) длиной 3, и ваш вызов lapply затем повторяется по этим 3 столбцам (x, y, sim), что, скорее всего, не то, что вы хотите. Четко объясните, чего вы хотите в качестве конечного результата, и мы, возможно, сможем вам помочь.2. "Вы можете создать вложенный список, если хотите, такой, чтобы в нем было 10 записей (соответствующих сим 1 - 10), а затем у каждой из этих записей был список шаблонов точек. Это то, чего ты хочешь?" Да, именно этого я и хочу. "Не то, чтобы координаты были кадром data.frame (конечным, следовательно, списком) длиной 3, и ваш вызов lapply затем повторяется по этим 3 столбцам (x, y, sim), что, скорее всего, не то, что вы хотите. "Я не понимаю, как это не data.frame, потому что я создал его со строкой ` координаты<-data.frame(x,y,sim) координаты Но я вижу, что это не то, чего я хочу.
3. A
data.frame
-это просто специальноеlist
приложение, в котором все элементы имеют одинаковую длину. Тоcoordinates
же самое относится и к а, иdata.frame
к аlist
. В приведенном ниже ответе я не составляю вложенный список, а просто простой список, в котором каждый элемент представляет собой одноточечный шаблон. Я думаю, что это то, что вы хотите, но если у вас есть более одного шаблона точек для каждого значения sim - карты, это, вероятно, не так.Ответ №1:
Если вам действительно просто нужен список из 10 точечных шаблонов со 100 однородными случайными точками, вы можете сделать:
library(spatstat) rslt <- runifpoint(100, win = square(1000), nsim = 10) rslt # Is a list with extra spatstat class `solist` (spatial object list) #> List of point patterns #> #> Simulation 1: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 2: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 3: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 4: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 5: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 6: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 7: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 8: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 9: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 10: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units plot(rslt)
Если вы хотите разделить свой data.frame с координатами на 10 различных
шаблонов точек, которые вы можете сделать (повторно используя свой код):3`
#> Planar point pattern: 100 points
#> window: rectangle = [0, 1000] x [0, 1000] units
#>
#>#r #function #tidyr #spatstat
Вопрос:
Я пытаюсь создать список ландшафтных объектов, которые были сгруппированы в соответствии с переменной, называемой sim. В идеале мне нужен список с ландшафтными объектами, который можно назвать т. е.
[[1]] Planar point pattern: 100 points window: rectangle = [0, 1000] x [0, 1000] units [[2]] Planar point pattern: 100 points window: rectangle = [0, 1000] x [0, 1000] units
Код, который я пробовал до сих пор, таков:
library(tidyr) library(spatstat) set.seed(23) x<-runif(1000)*1000 y<-runif(1000)*1000 sim<-rep(1:10,100) coordinates<-data.frame(x,y,sim) coordinates<-coordinates[order(sim),] emptylist<-vector(mode="list",length=10) metriccalculation<-function(x,y){ emptylist<-ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y))
Это возвращает ошибку:
Error in get(as.character(FUN), mode = "function", envir = envir) : object 'coordinates' of mode 'function' was not found
ПРАВКА 1: Я попытался добавить пустой список в качестве переменной в функцию metriccalculation, вернув ту же ошибку.
metriccalculation<-function(x,y,r){ r<-ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y,emptylist))
ПРАВКА 2: Я попытался добавить дополнение к функции, чтобы список был заполнен. Это также привело к той же ошибке.
emptylist<-vector(mode="list",length=10) metriccalculation<-function(x,y,r){ r<-append(r,(ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y,emptylist))
ПРАВКА 3:
Хорошо, я проверил в Интернете, и есть возможный способ передачи нескольких переменных через функцию apply. Это приводит к:
coordinates%>%group_by(sim)%>%apply(coordinates,metriccalculation,x=coordinates$x,y=coordinates$y,r=emptylist)
И новая ошибка,
Error in d[-MARGIN] : invalid subscript type 'list'
Комментарии:
1. Что вы подразумеваете под списком, сгруппированным по переменной sim? Что такое сгруппированный список? Вы можете создать вложенный список, если хотите, такой, чтобы в нем было 10 записей (соответствующих сим 1 - 10), а затем у каждой из этих записей был список шаблонов точек. Это то, чего ты хочешь? То, что у вас сейчас есть, кажется очень запутанным. Это не
coordinates
кадр data.frame (конец списка) длиной 3, и ваш вызов lapply затем повторяется по этим 3 столбцам (x, y, sim), что, скорее всего, не то, что вы хотите. Четко объясните, чего вы хотите в качестве конечного результата, и мы, возможно, сможем вам помочь.2. "Вы можете создать вложенный список, если хотите, такой, чтобы в нем было 10 записей (соответствующих сим 1 - 10), а затем у каждой из этих записей был список шаблонов точек. Это то, чего ты хочешь?" Да, именно этого я и хочу. "Не то, чтобы координаты были кадром data.frame (конечным, следовательно, списком) длиной 3, и ваш вызов lapply затем повторяется по этим 3 столбцам (x, y, sim), что, скорее всего, не то, что вы хотите. "Я не понимаю, как это не data.frame, потому что я создал его со строкой ` координаты<-data.frame(x,y,sim) координаты Но я вижу, что это не то, чего я хочу.
3. A
data.frame
-это просто специальноеlist
приложение, в котором все элементы имеют одинаковую длину. Тоcoordinates
же самое относится и к а, иdata.frame
к аlist
. В приведенном ниже ответе я не составляю вложенный список, а просто простой список, в котором каждый элемент представляет собой одноточечный шаблон. Я думаю, что это то, что вы хотите, но если у вас есть более одного шаблона точек для каждого значения sim - карты, это, вероятно, не так.Ответ №1:
Если вам действительно просто нужен список из 10 точечных шаблонов со 100 однородными случайными точками, вы можете сделать:
library(spatstat) rslt <- runifpoint(100, win = square(1000), nsim = 10) rslt # Is a list with extra spatstat class `solist` (spatial object list) #> List of point patterns #> #> Simulation 1: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 2: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 3: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 4: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 5: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 6: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 7: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 8: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 9: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 10: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units plot(rslt)
Если вы хотите разделить свой data.frame с координатами на 10 различных
шаблонов точек, которые вы можете сделать (повторно используя свой код):4`
#> Planar point pattern: 100 points
#> window: rectangle = [0, 1000] x [0, 1000] units
#>
#>#r #function #tidyr #spatstat
Вопрос:
Я пытаюсь создать список ландшафтных объектов, которые были сгруппированы в соответствии с переменной, называемой sim. В идеале мне нужен список с ландшафтными объектами, который можно назвать т. е.
[[1]] Planar point pattern: 100 points window: rectangle = [0, 1000] x [0, 1000] units [[2]] Planar point pattern: 100 points window: rectangle = [0, 1000] x [0, 1000] units
Код, который я пробовал до сих пор, таков:
library(tidyr) library(spatstat) set.seed(23) x<-runif(1000)*1000 y<-runif(1000)*1000 sim<-rep(1:10,100) coordinates<-data.frame(x,y,sim) coordinates<-coordinates[order(sim),] emptylist<-vector(mode="list",length=10) metriccalculation<-function(x,y){ emptylist<-ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y))
Это возвращает ошибку:
Error in get(as.character(FUN), mode = "function", envir = envir) : object 'coordinates' of mode 'function' was not found
ПРАВКА 1: Я попытался добавить пустой список в качестве переменной в функцию metriccalculation, вернув ту же ошибку.
metriccalculation<-function(x,y,r){ r<-ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y,emptylist))
ПРАВКА 2: Я попытался добавить дополнение к функции, чтобы список был заполнен. Это также привело к той же ошибке.
emptylist<-vector(mode="list",length=10) metriccalculation<-function(x,y,r){ r<-append(r,(ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y,emptylist))
ПРАВКА 3:
Хорошо, я проверил в Интернете, и есть возможный способ передачи нескольких переменных через функцию apply. Это приводит к:
coordinates%>%group_by(sim)%>%apply(coordinates,metriccalculation,x=coordinates$x,y=coordinates$y,r=emptylist)
И новая ошибка,
Error in d[-MARGIN] : invalid subscript type 'list'
Комментарии:
1. Что вы подразумеваете под списком, сгруппированным по переменной sim? Что такое сгруппированный список? Вы можете создать вложенный список, если хотите, такой, чтобы в нем было 10 записей (соответствующих сим 1 - 10), а затем у каждой из этих записей был список шаблонов точек. Это то, чего ты хочешь? То, что у вас сейчас есть, кажется очень запутанным. Это не
coordinates
кадр data.frame (конец списка) длиной 3, и ваш вызов lapply затем повторяется по этим 3 столбцам (x, y, sim), что, скорее всего, не то, что вы хотите. Четко объясните, чего вы хотите в качестве конечного результата, и мы, возможно, сможем вам помочь.2. "Вы можете создать вложенный список, если хотите, такой, чтобы в нем было 10 записей (соответствующих сим 1 - 10), а затем у каждой из этих записей был список шаблонов точек. Это то, чего ты хочешь?" Да, именно этого я и хочу. "Не то, чтобы координаты были кадром data.frame (конечным, следовательно, списком) длиной 3, и ваш вызов lapply затем повторяется по этим 3 столбцам (x, y, sim), что, скорее всего, не то, что вы хотите. "Я не понимаю, как это не data.frame, потому что я создал его со строкой ` координаты<-data.frame(x,y,sim) координаты Но я вижу, что это не то, чего я хочу.
3. A
data.frame
-это просто специальноеlist
приложение, в котором все элементы имеют одинаковую длину. Тоcoordinates
же самое относится и к а, иdata.frame
к аlist
. В приведенном ниже ответе я не составляю вложенный список, а просто простой список, в котором каждый элемент представляет собой одноточечный шаблон. Я думаю, что это то, что вы хотите, но если у вас есть более одного шаблона точек для каждого значения sim - карты, это, вероятно, не так.Ответ №1:
Если вам действительно просто нужен список из 10 точечных шаблонов со 100 однородными случайными точками, вы можете сделать:
library(spatstat) rslt <- runifpoint(100, win = square(1000), nsim = 10) rslt # Is a list with extra spatstat class `solist` (spatial object list) #> List of point patterns #> #> Simulation 1: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 2: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 3: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 4: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 5: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 6: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 7: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 8: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 9: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 10: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units plot(rslt)
Если вы хотите разделить свой data.frame с координатами на 10 различных
шаблонов точек, которые вы можете сделать (повторно используя свой код):5`
#> Planar point pattern: 100 points
#> window: rectangle = [0, 1000] x [0, 1000] units
#>
#>#r #function #tidyr #spatstat
Вопрос:
Я пытаюсь создать список ландшафтных объектов, которые были сгруппированы в соответствии с переменной, называемой sim. В идеале мне нужен список с ландшафтными объектами, который можно назвать т. е.
[[1]] Planar point pattern: 100 points window: rectangle = [0, 1000] x [0, 1000] units [[2]] Planar point pattern: 100 points window: rectangle = [0, 1000] x [0, 1000] units
Код, который я пробовал до сих пор, таков:
library(tidyr) library(spatstat) set.seed(23) x<-runif(1000)*1000 y<-runif(1000)*1000 sim<-rep(1:10,100) coordinates<-data.frame(x,y,sim) coordinates<-coordinates[order(sim),] emptylist<-vector(mode="list",length=10) metriccalculation<-function(x,y){ emptylist<-ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y))
Это возвращает ошибку:
Error in get(as.character(FUN), mode = "function", envir = envir) : object 'coordinates' of mode 'function' was not found
ПРАВКА 1: Я попытался добавить пустой список в качестве переменной в функцию metriccalculation, вернув ту же ошибку.
metriccalculation<-function(x,y,r){ r<-ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y,emptylist))
ПРАВКА 2: Я попытался добавить дополнение к функции, чтобы список был заполнен. Это также привело к той же ошибке.
emptylist<-vector(mode="list",length=10) metriccalculation<-function(x,y,r){ r<-append(r,(ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y,emptylist))
ПРАВКА 3:
Хорошо, я проверил в Интернете, и есть возможный способ передачи нескольких переменных через функцию apply. Это приводит к:
coordinates%>%group_by(sim)%>%apply(coordinates,metriccalculation,x=coordinates$x,y=coordinates$y,r=emptylist)
И новая ошибка,
Error in d[-MARGIN] : invalid subscript type 'list'
Комментарии:
1. Что вы подразумеваете под списком, сгруппированным по переменной sim? Что такое сгруппированный список? Вы можете создать вложенный список, если хотите, такой, чтобы в нем было 10 записей (соответствующих сим 1 - 10), а затем у каждой из этих записей был список шаблонов точек. Это то, чего ты хочешь? То, что у вас сейчас есть, кажется очень запутанным. Это не
coordinates
кадр data.frame (конец списка) длиной 3, и ваш вызов lapply затем повторяется по этим 3 столбцам (x, y, sim), что, скорее всего, не то, что вы хотите. Четко объясните, чего вы хотите в качестве конечного результата, и мы, возможно, сможем вам помочь.2. "Вы можете создать вложенный список, если хотите, такой, чтобы в нем было 10 записей (соответствующих сим 1 - 10), а затем у каждой из этих записей был список шаблонов точек. Это то, чего ты хочешь?" Да, именно этого я и хочу. "Не то, чтобы координаты были кадром data.frame (конечным, следовательно, списком) длиной 3, и ваш вызов lapply затем повторяется по этим 3 столбцам (x, y, sim), что, скорее всего, не то, что вы хотите. "Я не понимаю, как это не data.frame, потому что я создал его со строкой ` координаты<-data.frame(x,y,sim) координаты Но я вижу, что это не то, чего я хочу.
3. A
data.frame
-это просто специальноеlist
приложение, в котором все элементы имеют одинаковую длину. Тоcoordinates
же самое относится и к а, иdata.frame
к аlist
. В приведенном ниже ответе я не составляю вложенный список, а просто простой список, в котором каждый элемент представляет собой одноточечный шаблон. Я думаю, что это то, что вы хотите, но если у вас есть более одного шаблона точек для каждого значения sim - карты, это, вероятно, не так.Ответ №1:
Если вам действительно просто нужен список из 10 точечных шаблонов со 100 однородными случайными точками, вы можете сделать:
library(spatstat) rslt <- runifpoint(100, win = square(1000), nsim = 10) rslt # Is a list with extra spatstat class `solist` (spatial object list) #> List of point patterns #> #> Simulation 1: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 2: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 3: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 4: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 5: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 6: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 7: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 8: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 9: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 10: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units plot(rslt)
Если вы хотите разделить свой data.frame с координатами на 10 различных
шаблонов точек, которые вы можете сделать (повторно используя свой код):6`
#> Planar point pattern: 100 points
#> window: rectangle = [0, 1000] x [0, 1000] units
#>
#>#r #function #tidyr #spatstat
Вопрос:
Я пытаюсь создать список ландшафтных объектов, которые были сгруппированы в соответствии с переменной, называемой sim. В идеале мне нужен список с ландшафтными объектами, который можно назвать т. е.
[[1]] Planar point pattern: 100 points window: rectangle = [0, 1000] x [0, 1000] units [[2]] Planar point pattern: 100 points window: rectangle = [0, 1000] x [0, 1000] units
Код, который я пробовал до сих пор, таков:
library(tidyr) library(spatstat) set.seed(23) x<-runif(1000)*1000 y<-runif(1000)*1000 sim<-rep(1:10,100) coordinates<-data.frame(x,y,sim) coordinates<-coordinates[order(sim),] emptylist<-vector(mode="list",length=10) metriccalculation<-function(x,y){ emptylist<-ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y))
Это возвращает ошибку:
Error in get(as.character(FUN), mode = "function", envir = envir) : object 'coordinates' of mode 'function' was not found
ПРАВКА 1: Я попытался добавить пустой список в качестве переменной в функцию metriccalculation, вернув ту же ошибку.
metriccalculation<-function(x,y,r){ r<-ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y,emptylist))
ПРАВКА 2: Я попытался добавить дополнение к функции, чтобы список был заполнен. Это также привело к той же ошибке.
emptylist<-vector(mode="list",length=10) metriccalculation<-function(x,y,r){ r<-append(r,(ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y,emptylist))
ПРАВКА 3:
Хорошо, я проверил в Интернете, и есть возможный способ передачи нескольких переменных через функцию apply. Это приводит к:
coordinates%>%group_by(sim)%>%apply(coordinates,metriccalculation,x=coordinates$x,y=coordinates$y,r=emptylist)
И новая ошибка,
Error in d[-MARGIN] : invalid subscript type 'list'
Комментарии:
1. Что вы подразумеваете под списком, сгруппированным по переменной sim? Что такое сгруппированный список? Вы можете создать вложенный список, если хотите, такой, чтобы в нем было 10 записей (соответствующих сим 1 - 10), а затем у каждой из этих записей был список шаблонов точек. Это то, чего ты хочешь? То, что у вас сейчас есть, кажется очень запутанным. Это не
coordinates
кадр data.frame (конец списка) длиной 3, и ваш вызов lapply затем повторяется по этим 3 столбцам (x, y, sim), что, скорее всего, не то, что вы хотите. Четко объясните, чего вы хотите в качестве конечного результата, и мы, возможно, сможем вам помочь.2. "Вы можете создать вложенный список, если хотите, такой, чтобы в нем было 10 записей (соответствующих сим 1 - 10), а затем у каждой из этих записей был список шаблонов точек. Это то, чего ты хочешь?" Да, именно этого я и хочу. "Не то, чтобы координаты были кадром data.frame (конечным, следовательно, списком) длиной 3, и ваш вызов lapply затем повторяется по этим 3 столбцам (x, y, sim), что, скорее всего, не то, что вы хотите. "Я не понимаю, как это не data.frame, потому что я создал его со строкой ` координаты<-data.frame(x,y,sim) координаты Но я вижу, что это не то, чего я хочу.
3. A
data.frame
-это просто специальноеlist
приложение, в котором все элементы имеют одинаковую длину. Тоcoordinates
же самое относится и к а, иdata.frame
к аlist
. В приведенном ниже ответе я не составляю вложенный список, а просто простой список, в котором каждый элемент представляет собой одноточечный шаблон. Я думаю, что это то, что вы хотите, но если у вас есть более одного шаблона точек для каждого значения sim - карты, это, вероятно, не так.Ответ №1:
Если вам действительно просто нужен список из 10 точечных шаблонов со 100 однородными случайными точками, вы можете сделать:
library(spatstat) rslt <- runifpoint(100, win = square(1000), nsim = 10) rslt # Is a list with extra spatstat class `solist` (spatial object list) #> List of point patterns #> #> Simulation 1: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 2: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 3: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 4: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 5: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 6: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 7: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 8: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 9: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 10: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units plot(rslt)
Если вы хотите разделить свой data.frame с координатами на 10 различных
шаблонов точек, которые вы можете сделать (повторно используя свой код):7`
#> Planar point pattern: 100 points
#> window: rectangle = [0, 1000] x [0, 1000] units
#>
#>#r #function #tidyr #spatstat
Вопрос:
Я пытаюсь создать список ландшафтных объектов, которые были сгруппированы в соответствии с переменной, называемой sim. В идеале мне нужен список с ландшафтными объектами, который можно назвать т. е.
[[1]] Planar point pattern: 100 points window: rectangle = [0, 1000] x [0, 1000] units [[2]] Planar point pattern: 100 points window: rectangle = [0, 1000] x [0, 1000] units
Код, который я пробовал до сих пор, таков:
library(tidyr) library(spatstat) set.seed(23) x<-runif(1000)*1000 y<-runif(1000)*1000 sim<-rep(1:10,100) coordinates<-data.frame(x,y,sim) coordinates<-coordinates[order(sim),] emptylist<-vector(mode="list",length=10) metriccalculation<-function(x,y){ emptylist<-ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y))
Это возвращает ошибку:
Error in get(as.character(FUN), mode = "function", envir = envir) : object 'coordinates' of mode 'function' was not found
ПРАВКА 1: Я попытался добавить пустой список в качестве переменной в функцию metriccalculation, вернув ту же ошибку.
metriccalculation<-function(x,y,r){ r<-ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y,emptylist))
ПРАВКА 2: Я попытался добавить дополнение к функции, чтобы список был заполнен. Это также привело к той же ошибке.
emptylist<-vector(mode="list",length=10) metriccalculation<-function(x,y,r){ r<-append(r,(ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y,emptylist))
ПРАВКА 3:
Хорошо, я проверил в Интернете, и есть возможный способ передачи нескольких переменных через функцию apply. Это приводит к:
coordinates%>%group_by(sim)%>%apply(coordinates,metriccalculation,x=coordinates$x,y=coordinates$y,r=emptylist)
И новая ошибка,
Error in d[-MARGIN] : invalid subscript type 'list'
Комментарии:
1. Что вы подразумеваете под списком, сгруппированным по переменной sim? Что такое сгруппированный список? Вы можете создать вложенный список, если хотите, такой, чтобы в нем было 10 записей (соответствующих сим 1 - 10), а затем у каждой из этих записей был список шаблонов точек. Это то, чего ты хочешь? То, что у вас сейчас есть, кажется очень запутанным. Это не
coordinates
кадр data.frame (конец списка) длиной 3, и ваш вызов lapply затем повторяется по этим 3 столбцам (x, y, sim), что, скорее всего, не то, что вы хотите. Четко объясните, чего вы хотите в качестве конечного результата, и мы, возможно, сможем вам помочь.2. "Вы можете создать вложенный список, если хотите, такой, чтобы в нем было 10 записей (соответствующих сим 1 - 10), а затем у каждой из этих записей был список шаблонов точек. Это то, чего ты хочешь?" Да, именно этого я и хочу. "Не то, чтобы координаты были кадром data.frame (конечным, следовательно, списком) длиной 3, и ваш вызов lapply затем повторяется по этим 3 столбцам (x, y, sim), что, скорее всего, не то, что вы хотите. "Я не понимаю, как это не data.frame, потому что я создал его со строкой ` координаты<-data.frame(x,y,sim) координаты Но я вижу, что это не то, чего я хочу.
3. A
data.frame
-это просто специальноеlist
приложение, в котором все элементы имеют одинаковую длину. Тоcoordinates
же самое относится и к а, иdata.frame
к аlist
. В приведенном ниже ответе я не составляю вложенный список, а просто простой список, в котором каждый элемент представляет собой одноточечный шаблон. Я думаю, что это то, что вы хотите, но если у вас есть более одного шаблона точек для каждого значения sim - карты, это, вероятно, не так.Ответ №1:
Если вам действительно просто нужен список из 10 точечных шаблонов со 100 однородными случайными точками, вы можете сделать:
library(spatstat) rslt <- runifpoint(100, win = square(1000), nsim = 10) rslt # Is a list with extra spatstat class `solist` (spatial object list) #> List of point patterns #> #> Simulation 1: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 2: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 3: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 4: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 5: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 6: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 7: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 8: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 9: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 10: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units plot(rslt)
Если вы хотите разделить свой data.frame с координатами на 10 различных
шаблонов точек, которые вы можете сделать (повторно используя свой код):8`
#> Planar point pattern: 100 points
#> window: rectangle = [0, 1000] x [0, 1000] units
#>
#>#r #function #tidyr #spatstat
Вопрос:
Я пытаюсь создать список ландшафтных объектов, которые были сгруппированы в соответствии с переменной, называемой sim. В идеале мне нужен список с ландшафтными объектами, который можно назвать т. е.
[[1]] Planar point pattern: 100 points window: rectangle = [0, 1000] x [0, 1000] units [[2]] Planar point pattern: 100 points window: rectangle = [0, 1000] x [0, 1000] units
Код, который я пробовал до сих пор, таков:
library(tidyr) library(spatstat) set.seed(23) x<-runif(1000)*1000 y<-runif(1000)*1000 sim<-rep(1:10,100) coordinates<-data.frame(x,y,sim) coordinates<-coordinates[order(sim),] emptylist<-vector(mode="list",length=10) metriccalculation<-function(x,y){ emptylist<-ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y))
Это возвращает ошибку:
Error in get(as.character(FUN), mode = "function", envir = envir) : object 'coordinates' of mode 'function' was not found
ПРАВКА 1: Я попытался добавить пустой список в качестве переменной в функцию metriccalculation, вернув ту же ошибку.
metriccalculation<-function(x,y,r){ r<-ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y,emptylist))
ПРАВКА 2: Я попытался добавить дополнение к функции, чтобы список был заполнен. Это также привело к той же ошибке.
emptylist<-vector(mode="list",length=10) metriccalculation<-function(x,y,r){ r<-append(r,(ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y,emptylist))
ПРАВКА 3:
Хорошо, я проверил в Интернете, и есть возможный способ передачи нескольких переменных через функцию apply. Это приводит к:
coordinates%>%group_by(sim)%>%apply(coordinates,metriccalculation,x=coordinates$x,y=coordinates$y,r=emptylist)
И новая ошибка,
Error in d[-MARGIN] : invalid subscript type 'list'
Комментарии:
1. Что вы подразумеваете под списком, сгруппированным по переменной sim? Что такое сгруппированный список? Вы можете создать вложенный список, если хотите, такой, чтобы в нем было 10 записей (соответствующих сим 1 - 10), а затем у каждой из этих записей был список шаблонов точек. Это то, чего ты хочешь? То, что у вас сейчас есть, кажется очень запутанным. Это не
coordinates
кадр data.frame (конец списка) длиной 3, и ваш вызов lapply затем повторяется по этим 3 столбцам (x, y, sim), что, скорее всего, не то, что вы хотите. Четко объясните, чего вы хотите в качестве конечного результата, и мы, возможно, сможем вам помочь.2. "Вы можете создать вложенный список, если хотите, такой, чтобы в нем было 10 записей (соответствующих сим 1 - 10), а затем у каждой из этих записей был список шаблонов точек. Это то, чего ты хочешь?" Да, именно этого я и хочу. "Не то, чтобы координаты были кадром data.frame (конечным, следовательно, списком) длиной 3, и ваш вызов lapply затем повторяется по этим 3 столбцам (x, y, sim), что, скорее всего, не то, что вы хотите. "Я не понимаю, как это не data.frame, потому что я создал его со строкой ` координаты<-data.frame(x,y,sim) координаты Но я вижу, что это не то, чего я хочу.
3. A
data.frame
-это просто специальноеlist
приложение, в котором все элементы имеют одинаковую длину. Тоcoordinates
же самое относится и к а, иdata.frame
к аlist
. В приведенном ниже ответе я не составляю вложенный список, а просто простой список, в котором каждый элемент представляет собой одноточечный шаблон. Я думаю, что это то, что вы хотите, но если у вас есть более одного шаблона точек для каждого значения sim - карты, это, вероятно, не так.Ответ №1:
Если вам действительно просто нужен список из 10 точечных шаблонов со 100 однородными случайными точками, вы можете сделать:
library(spatstat) rslt <- runifpoint(100, win = square(1000), nsim = 10) rslt # Is a list with extra spatstat class `solist` (spatial object list) #> List of point patterns #> #> Simulation 1: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 2: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 3: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 4: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 5: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 6: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 7: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 8: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 9: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 10: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units plot(rslt)
Если вы хотите разделить свой data.frame с координатами на 10 различных
шаблонов точек, которые вы можете сделать (повторно используя свой код):9`
#> Planar point pattern: 100 points
#> window: rectangle = [0, 1000] x [0, 1000] units
#>
#>#r #function #tidyr #spatstat
Вопрос:
Я пытаюсь создать список ландшафтных объектов, которые были сгруппированы в соответствии с переменной, называемой sim. В идеале мне нужен список с ландшафтными объектами, который можно назвать т. е.
[[1]] Planar point pattern: 100 points window: rectangle = [0, 1000] x [0, 1000] units [[2]] Planar point pattern: 100 points window: rectangle = [0, 1000] x [0, 1000] units
Код, который я пробовал до сих пор, таков:
library(tidyr) library(spatstat) set.seed(23) x<-runif(1000)*1000 y<-runif(1000)*1000 sim<-rep(1:10,100) coordinates<-data.frame(x,y,sim) coordinates<-coordinates[order(sim),] emptylist<-vector(mode="list",length=10) metriccalculation<-function(x,y){ emptylist<-ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y))
Это возвращает ошибку:
Error in get(as.character(FUN), mode = "function", envir = envir) : object 'coordinates' of mode 'function' was not found
ПРАВКА 1: Я попытался добавить пустой список в качестве переменной в функцию metriccalculation, вернув ту же ошибку.
metriccalculation<-function(x,y,r){ r<-ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y,emptylist))
ПРАВКА 2: Я попытался добавить дополнение к функции, чтобы список был заполнен. Это также привело к той же ошибке.
emptylist<-vector(mode="list",length=10) metriccalculation<-function(x,y,r){ r<-append(r,(ppp(x,y,owin(xrange=c(0,1000),yrange=c(0,1000))))) } coordinates%>%group_by(sim)%>%lapply(coordinates,function(x)metriccalculation(coordinates$x,coordinates$y,emptylist))
ПРАВКА 3:
Хорошо, я проверил в Интернете, и есть возможный способ передачи нескольких переменных через функцию apply. Это приводит к:
coordinates%>%group_by(sim)%>%apply(coordinates,metriccalculation,x=coordinates$x,y=coordinates$y,r=emptylist)
И новая ошибка,
Error in d[-MARGIN] : invalid subscript type 'list'
Комментарии:
1. Что вы подразумеваете под списком, сгруппированным по переменной sim? Что такое сгруппированный список? Вы можете создать вложенный список, если хотите, такой, чтобы в нем было 10 записей (соответствующих сим 1 - 10), а затем у каждой из этих записей был список шаблонов точек. Это то, чего ты хочешь? То, что у вас сейчас есть, кажется очень запутанным. Это не
coordinates
кадр data.frame (конец списка) длиной 3, и ваш вызов lapply затем повторяется по этим 3 столбцам (x, y, sim), что, скорее всего, не то, что вы хотите. Четко объясните, чего вы хотите в качестве конечного результата, и мы, возможно, сможем вам помочь.2. "Вы можете создать вложенный список, если хотите, такой, чтобы в нем было 10 записей (соответствующих сим 1 - 10), а затем у каждой из этих записей был список шаблонов точек. Это то, чего ты хочешь?" Да, именно этого я и хочу. "Не то, чтобы координаты были кадром data.frame (конечным, следовательно, списком) длиной 3, и ваш вызов lapply затем повторяется по этим 3 столбцам (x, y, sim), что, скорее всего, не то, что вы хотите. "Я не понимаю, как это не data.frame, потому что я создал его со строкой ` координаты<-data.frame(x,y,sim) координаты Но я вижу, что это не то, чего я хочу.
3. A
data.frame
-это просто специальноеlist
приложение, в котором все элементы имеют одинаковую длину. Тоcoordinates
же самое относится и к а, иdata.frame
к аlist
. В приведенном ниже ответе я не составляю вложенный список, а просто простой список, в котором каждый элемент представляет собой одноточечный шаблон. Я думаю, что это то, что вы хотите, но если у вас есть более одного шаблона точек для каждого значения sim - карты, это, вероятно, не так.Ответ №1:
Если вам действительно просто нужен список из 10 точечных шаблонов со 100 однородными случайными точками, вы можете сделать:
library(spatstat) rslt <- runifpoint(100, win = square(1000), nsim = 10) rslt # Is a list with extra spatstat class `solist` (spatial object list) #> List of point patterns #> #> Simulation 1: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 2: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 3: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 4: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 5: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 6: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 7: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 8: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 9: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units #> #> Simulation 10: #> Planar point pattern: 100 points #> window: rectangle = [0, 1000] x [0, 1000] units plot(rslt)
Если вы хотите разделить свой data.frame с координатами на 10 различных
шаблонов точек, которые вы можете сделать (повторно используя свой код):10`
#> Planar point pattern: 100 points
#> window: rectangle = [0, 1000] x [0, 1000] units
plot(as.solist(rslt2))
Комментарии:
1. Большое вам спасибо, я очень благодарен за этот вклад. Более того, я многому научился.
2. Рад помочь @opensauce. Пожалуйста, нажмите галочку рядом с ответом, чтобы отметить его как принятый ответ для будущих читателей.