在 R 中,是否可以对函数的输出执行“立即”逻辑索引?
为了澄清这个有点模糊的问题,这里有一个小例子,我相信很多人以前都遇到过类似的例子。假设我们有一个向量“数据”,如下所示:
data <- c(1,1,3,5,6,6,8,10,14,15,15,20)
如果我们现在对这个向量应用函数“制表”,结果将是:
tabulate(data)
[1] 2 0 1 0 1 2 0 1 0 1 0 0 0 1 2 0 0 0 0 1
但是,通常希望只访问向量的那些(在这种情况下)非零的条目,传统上会这样做(我猜......):
tabulate(data)[tabulate(data) != 0]
[1] 2 1 1 2 1 1 1 2 1
但是,在这种情况下,“tabulate(data)”需要计算两次,这显得效率低下甚至浪费;至少,它绝对不优雅。同样,将“tabulate(data)”的结果存储在临时变量中可以如果使用大型数据集会很麻烦。
我现在的问题很简单:是否存在针对此类问题的简单、更优雅(语法)的解决方法?像一个“神奇的”direct.index 函数可以完成这项工作吗?像这样,
direct.index(tabulate.data, condition='!= 0')
...这基本上会丢弃所有在计算时已经不满足索引条件的值,从而使整个过程更快更高效。
为简单起见,此处给出了从“表格”结果中去除零的具体问题;事实上,我在很多不同的情况下都对此感到头疼。也许我也只是对 R 有一些基本的误解......
顺便说一句,我已经研究过“?subset”,但这似乎不是我想要的。