首页 > 解决方案 > 如何从单个操作中获得多个输出?

问题描述

这些是为分析不同物种之间的相互作用而编写的代码。

在这段代码中,我试图从每个分析中获取单独的输出,但没有成功。

  lapply(data.list, function(x) {            
    grp <- factor(x$species)                 
    window <- ripras(x$utmX, x$utmY)         
    pp.grp <- ppp(x$utmX, x$utmY, window=window, marks=grp) 
    split.grp <- split(pp.grp)               
    L <- (alltypes(pp.grp, "L"))         
    LE <- alltypes(pp.grp, Lcross, nsim = 100, envelope = TRUE)  
    return("L", "LE")
})
plot(L[1])

所以我的问题是如何从单个操作中获得多个输出?

非常感谢您!

标签: functionreturnlapplyspatstat

解决方案


在 R 中处理函数的多个输出的最常见方法是将结果放入列表中并返回。希望这可以启发你:

f <- function(x){
  L <- x
  LE <- matrix(x, 2, 2)
  rslt <- list(L = L, LE = LE)
  return(rslt)
}
y <- f(7)

现在 y 是一个包含两个元素的列表:L 和 LE

y
#> $L
#> [1] 7
#> 
#> $LE
#>      [,1] [,2]
#> [1,]    7    7
#> [2,]    7    7

用于$获取命名元素(在本例中L- 与 相同y[[1]]):

y$L
#> [1] 7

reprex 包(v0.2.1)于 2019 年 3 月 16 日创建


推荐阅读