我如何从 R 中的 mapply 或 Map 函数中的数据列表 select 2 个变量?
How I can select 2 variables from the list of data within mapply or Map functions in R?
我有一个数据框列表,其中 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
})
所以我的问题是如何从数据列表中 select 2 个将用于 mappy 和 Map 函数的变量?
非常感谢!
对您的第二次尝试稍作修改应该可以。
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)
由 reprex package (v0.2.1)
于 2019-03-14 创建
另一种选择:
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)
我有一个数据框列表,其中 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
})
所以我的问题是如何从数据列表中 select 2 个将用于 mappy 和 Map 函数的变量?
非常感谢!
对您的第二次尝试稍作修改应该可以。
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)
由 reprex package (v0.2.1)
于 2019-03-14 创建另一种选择:
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)