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

时间:2016-05-30 07:12:30

标签: r

我有一般性问题和具体例子。一般的问题是:有没有办法捕获函数的结果,所以我可以过滤它们而不创建临时变量?

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

tmp <- cor(stocks)
max(tmp[tmp < 1.0])

有没有办法在一行代码中执行此操作?

注意:我知道在这个特定实例中通过将对角线设置为0可能会得到相同的结果,但我想了解更一般的情况。如何对cor(股票)的结果进行子集或过滤?

2 个答案:

答案 0 :(得分:5)

您可以使用with功能:

with(list(tmp=cor(stocks)),max(tmp[tmp < 3]))

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

答案 1 :(得分:2)

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

library('magrittr')
data("EuStockMarkets")
ans <-
  cor(EuStockMarkets) %>%
  .[. < 1] %>%
  max

给出0.9911539

管道%>%获取之前的计算结果并将其传递到下一行,您可以使用占位符.来引用它。最后一行是写max(.)的简短方法。