R 管道:未找到对象。我错过了什么?

问题描述 投票:0回答:2

所以这确实是一个基本问题,但是我坚持尝试使用以下基本代码:

dc_test |> table(testVar)

它导致:

错误:找不到对象“testVar”

dc_test 是一个数据框。 testVar 列是“字符”类。

如果我直接使用 table() 函数,它的工作不会出错,但是这对于包含过滤和其他操作来说并不方便:

table(dc_test$testVar)

-> 我得到的表格没有错误。

table()函数不适用于管道还是我使用错误?

我试过了

dc_test |> table(testVar)
dc_test |> table(data = _$testVar)
r pipe
2个回答
0
投票

这可能是您能得到的最接近的:

dc_test <- data.frame(testVar = 1:5)
dc_test |> _$testVar |> table()

0
投票

dc_test |> table(testVar)
table(dc_test, testVar)
完全相同,如果运行该行,您将得到相同的错误。

管道不允许您使用没有

$
的列名称。许多
dplyr
函数确实可以让您执行此操作,并且它们通常与管道一起使用,但您可以在没有
dplyr
的情况下使用管道,也可以在没有管道的情况下使用
dplyr
。它们不相关,只是经常组合在一起。

您可以做的就是通过管道输入

with()
函数。
with()
函数的全部目的是让您使用不带引号或
$
的列名称。所以这应该有效:

dc_test |> with(table(testVar))

## exact equivalent to
with(dc_test, table(testVar))
© www.soinside.com 2019 - 2024. All rights reserved.