R:如何让用户定义的函数返回多个输出? [复制]
Posted
技术标签:
【中文标题】R:如何让用户定义的函数返回多个输出? [复制]【英文标题】:R: how to get a user-defined function to return multiple outputs? [duplicate] 【发布时间】:2016-05-16 21:53:33 【问题描述】:我想创建一个函数,它接受一个变量并返回多个输出,以便我可以将后者用于函数之外的其他目的。以下面的简化版本为例:
user <- function(x)a <- x+1; a <- a+0.1; b <- a*-1
sum(a,b)
所以如果我输入user(10)
,a
将是 11.1,b
将是 -11.1,sum(a,b)
将返回 0。但目前 R 并没有告诉我对象 'a' 或对象 'b'被发现。我该如何解决这个问题?
【问题讨论】:
1) 你不能不求助于assign
但是 2) 不要。这并不是真正的 R 方法。如果要返回多个输出,请将它们放入一个列表并返回该列表。
一个愚蠢的问题:如果我的输出同时包含一个数组和一个向量,那么列表对它们来说是正确的数据结构吗?
@dasf - 是的,列表是正确的数据结构,它可以存储数组和向量(以及任何其他数据结构)。
另一个副本(如果你不喜欢标记的那个)function with multiple outputs.
【参考方案1】:
这真的很容易。只需返回一个列表:
user <- function(x)a <- x+1; a <- a+0.1; b <- a*-1; return( list(a,b, absum=sum(a,b) ))
至少在我第一次阅读时,我不同意 Dason。这正是做到这一点的 R 方式。在我的第二次阅读中,我认为他试图理解函数具有环境的概念,并且您不能期望变量在它们之外持续存在,除非它们以定义的结构返回。列表是返回更复杂对象的典型结构。返回命名列表可能会更好,以便索引约定可用。
【讨论】:
我想你同意我的看法。我是说从函数内部直接分配给“a”和“b”不是 R 的方式。以上是关于R:如何让用户定义的函数返回多个输出? [复制]的主要内容,如果未能解决你的问题,请参考以下文章