list - 如何从 R 中的 mapply 或 Map 函数中的数据列表中选择 2 个变量?
问题描述
我有一个数据框列表,其中 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 函数的变量?
非常感谢!
解决方案
对您的第二次尝试稍作修改应该会起作用。
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 包(v0.2.1)于 2019 年 3 月 14 日创建
推荐阅读
- nasm - 无法获得正确的 .ascii 和
- c# - 使用 Entity Framework Core 更新具有特定 id 的不同数据的多行
- pygame - Pygame事件:在不释放按键的情况下触发按键事件
- angular - 在 Capacitor 中保存 pdf 文件
- c++ - 被C++中的排序比较方法迷惑
- image - 当输入变量是大图像时如何使用 Matlab 最小化成本函数:提高速度并防止内存崩溃
- javascript - 将数组转换为单个url参数字符串
- javascript - 如何使用横向卷轴游戏中的方法从数组中删除元素?
- python - 当内部和内部通信器合并时,使用 Spawn() 从 python 生成的 Fortran 子(或 C++ 或 python)进程不会断开连接
- ruby-on-rails - 使用 ruby 脚本将 git repo 克隆到我的系统后,如何存储文件名?