如何从单个操作获得多个输出?

时间:2019-03-15 22:34:45

标签: function return lapply spatstat

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

在这段代码中,我尝试从每个分析中获取单独的输出均未成功。

  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])

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

非常感谢您!

1 个答案:

答案 0 :(得分:0)

处理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 package(v0.2.1)于2019-03-16创建