有没有办法过滤R中函数调用的结果?

有没有办法过滤R中函数调用的结果?,r,R,我有一个一般性的问题和一个具体的例子。一般的问题是:有没有一种方法可以捕获函数的结果,这样我就可以在不创建临时变量的情况下对其进行过滤 这是枫树。如果我想在非1.0的相关矩阵中找到最高相关性,我可以: tmp <- cor(stocks) max(tmp[tmp < 1.0]) tmp您可以使用以下功能: with(list(tmp=cor(stocks)),max(tmp[tmp < 3])) 带有(列表(tmp=cor(股票)),最大值(tmp[tmp% 最大值 给出

我有一个一般性的问题和一个具体的例子。一般的问题是:有没有一种方法可以捕获函数的结果,这样我就可以在不创建临时变量的情况下对其进行过滤

这是枫树。如果我想在非1.0的相关矩阵中找到最高相关性,我可以:

tmp <- cor(stocks)
max(tmp[tmp < 1.0])
tmp您可以使用以下功能:

with(list(tmp=cor(stocks)),max(tmp[tmp < 3]))
带有(列表(tmp=cor(股票)),最大值(tmp[tmp<3]))

请注意,这并不比您的方法更有效,因为您仍在引擎盖下创建一个临时变量。

您可以使用magrittr中的管道操作符执行此操作:

library('magrittr')
data("EuStockMarkets")
ans <-
  cor(EuStockMarkets) %>%
  .[. < 1] %>%
  max
library('magrittr')
数据(“欧洲股票市场”)
ans%
.[. < 1] %>%
最大值
给出
0.9911539


管道
%>%
将计算结果放在前面,并将其传递到下一行,您可以使用占位符
引用它。最后一行是用(list(tmp=cor(stocks)),max(tmp[tmp<3])写
max(.)
的一种简短方式。但是,创建一个临时变量并没有什么害处,因为R无论如何都是在幕后进行的……对。但是我必须手动处理它。如果R在引擎盖下运行,它不会污染我的命名空间。是的,这是真的。。。我只是指出,因为人们可以认为R可以以优化的方式执行操作,而无需分配任何新的内容,但事实并非如此……如果你能给出一个实际的答案,我很乐意选择它。