2012-05-02 24 views
1

嗨,我不太了解Rserve的返回类型在多个命令的情况下。例如。Rserve返回类型在多语句的情况下

a<-rnorm(10);a[4];rnorm(3) 

看来Rserve只返回最后一个评估语句, RNORM(3)。使用Rserve可以获得所有三个输出值吗?

另外我很想知道在R中究竟能得到最后评估表达式的返回值吗? R中有一个特殊字符可以像Perl一样获得吗?

回答

3

这是正常的R行为,与您在函数中获得的行为相当。例如:

spam = function(x, y) { 
    z = x + y 
} 

这里R返回z,因为这是最后一次执行的操作。为了让所有的对象,你可以使用一个列表:

spam = function(x, y) { 
    z = x + y 
    list(x,y,z) 
} 

这应该工作你的情况:

a<-rnorm(10);list(a,a[4],rnorm(3)) 

另外,我不知道的方式来提取上次执行的表达,但我不会推荐使用它。这种语法只会使程序的流程更难以阅读,并且不会为您节省时间。

+0

嗯,我不知道,也许是我用Python获取的东西。我从答案中删除了它。 –

+0

@SimonUrbanek嗨,我懒得检查源代码:),你把命令发送到Rserve里面的虚拟功能? – FUD

+0

不,它们会被逐一评估(解析器返回一个表达式向量),并且最后一个值被发送 - 这实际上是为了避免新手用户的陷阱,将代码简单地包装到'{'''''所以你只有一个表达。所以,不,你不能使用'return()'如果这是个问题:) –

相关问题