R:如何让一个用户定义的函数到 return 多个输出?
R: how to get a user-defined function to return multiple outputs?
我想制作一个接受一个变量和 returns 多个输出的函数,这样我就可以将后者用于函数之外的其他目的。以下面的简化版本为例:
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)
将是 return 0。但是目前R 告诉我找不到对象 'a' 或对象 'b'。我该如何解决这个问题?
这真的很容易。只是 return 个列表:
user <- function(x){a <- x+1; a <- a+0.1; b <- a*-1; return( list(a,b, absum=sum(a,b) )) }
我至少在第一次阅读时不同意 Dason。这正是做到这一点的 R 方式。在我的第二次阅读中,我认为他试图理解函数有环境的概念,并且你不能指望变量在它们之外持续存在,除非它们被 returned 在一个定义的结构中。列表是 returning 更复杂对象的典型结构。 return 命名列表可能更好,这样索引约定可能可用。
我想制作一个接受一个变量和 returns 多个输出的函数,这样我就可以将后者用于函数之外的其他目的。以下面的简化版本为例:
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)
将是 return 0。但是目前R 告诉我找不到对象 'a' 或对象 'b'。我该如何解决这个问题?
这真的很容易。只是 return 个列表:
user <- function(x){a <- x+1; a <- a+0.1; b <- a*-1; return( list(a,b, absum=sum(a,b) )) }
我至少在第一次阅读时不同意 Dason。这正是做到这一点的 R 方式。在我的第二次阅读中,我认为他试图理解函数有环境的概念,并且你不能指望变量在它们之外持续存在,除非它们被 returned 在一个定义的结构中。列表是 returning 更复杂对象的典型结构。 return 命名列表可能更好,这样索引约定可能可用。