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:如何让用户定义的函数返回多个输出? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

用户定义函数将多个数据框导出到全局环境中

使用用户定义函数时如何让两个函数返回?

如何让函数返回 2 个单独的值? [复制]

如何在Python中让两个print函数的输出打印在一行内

如何在 SQL Server 中获取用户定义的表值函数的结果形状? [复制]

R用户定义函数对多个变量进行分组