仍然试图进入R逻辑...解压缩(在LHS上)返回多个值的函数的结果的"最佳"方法是什么?
我显然不能这样做:
R> functionReturningTwoValues <- function() { return(c(1, 2)) }
R> functionReturningTwoValues()
[1] 1 2
R> a, b <- functionReturningTwoValues()
Error: unexpected ',' in "a,"
R> c(a, b) <- functionReturningTwoValues()
Error in c(a, b) <- functionReturningTwoValues() : object 'a' not found
Run Code Online (Sandbox Code Playgroud)
我真的必须做以下事吗?
R> r <- functionReturningTwoValues()
R> a <- r[1]; b <- r[2]
Run Code Online (Sandbox Code Playgroud)
或者R程序员会写更像这样的东西:
R> functionReturningTwoValues <- function() {return(list(first=1, second=2))}
R> r <- functionReturningTwoValues()
R> r$first
[1] 1
R> r$second
[1] 2
Run Code Online (Sandbox Code Playgroud)
---编辑回答谢恩的问题---
我真的不需要给结果值部分命名.我申请一个聚合函数的第一个组件和其他到第二组件(min和max,如果它是我不需要分裂他们两个组件功能相同).
有没有办法输出例如2个对象而不使用list()?
my.fun=function(vector, index)
{
a=fun.a(vector, index)
b=fun.b(vector, index)
output=list(a,b)
}
Run Code Online (Sandbox Code Playgroud)
或输出2个对象列表?考虑到我也可以:
c=fun.a(vector, index)
d=fun.b(vector, index)
Run Code Online (Sandbox Code Playgroud)
并希望list(a,b)和另一个list(c,d)相同的功能.
这只是我正在寻找的一个小例子,我的函数应用于大对象,我将它们作为列表导出,但是我想导出一个中间计算.一种选择是在同一列表中合并所有,但我想知道是否有另一种解决方案.