看看这条线本身: filter(cyl %in% eval(input_checkboxgroup(cyl, selected = '4'))) %>%

看看这条线本身: filter(cyl %in% eval(input_checkboxgroup(cyl, selected = '4'))) %>%,r,ggvis,R,Ggvis,您可能认识到过滤器不是一个ggvis函数。如果没有,您可以使用?ggvis查看帮助页面中的ggvis,然后转到索引。您将看到此处没有列出任何过滤器功能。现在你知道函数缺失了。该函数的源代码可以是您正在处理的代码中其他地方定义的包或函数 我们还知道,filter的结果基于ggvis绘图中的交互元素(input\u checkboxgroup)。我们知道结果无法评估,因为我们看不到图 因此,如果您将任何ggvis相关项目计算出来,您将得到如下一段代码: selected_cyl <- mtca

您可能认识到过滤器不是一个
ggvis
函数。如果没有,您可以使用
?ggvis
查看帮助页面中的
ggvis
,然后转到索引。您将看到此处没有列出任何
过滤器
功能。现在你知道函数缺失了。该函数的源代码可以是您正在处理的代码中其他地方定义的包或函数

我们还知道,
filter
的结果基于
ggvis
绘图中的交互元素(
input\u checkboxgroup
)。我们知道结果无法评估,因为我们看不到图

因此,如果您将任何
ggvis
相关项目计算出来,您将得到如下一段代码:

selected_cyl <- mtcars %>%
  filter(cyl %in% '4')
有道理,对吧?因为事实上,我们在任何地方都没有定义
cyl
。我们知道它是数据框中的一列

在这样的示例中,函数很可能来自dplyr或tidyr。大多数当前代码将使用这两种方法之一。除此之外,确切地知道有点困难。不幸的是,使用`sos::findFn(“过滤器”)搜索CRAN上的所有函数名(使用软件包
sos
)不会给出答案。在dplyr文档中,“过滤器”在窗口函数部分有些隐藏

在我们的例子中,添加dplyr将使其工作:

library(dplyr)
selected_cyl <- mtcars %>%
  filter(cyl %in% '4')
看起来很像我们刚才纠正的,只是在
match
中没有错误,我们现在在
lappy
中有错误。我们还知道
cyl
的第一个引用被正确找到(使用
dplyr
管道替换)。因此问题一定在第二个
cyl

要填充
input\u checkboxgroup
我们需要一个带有选择的值列表(提示此问题的“隐藏列表”)。由于某种原因,dplyr样式的管道在此处不起作用,因此我们必须指定cyl是
mtcars
数据框中的一列。例如:

filter(cyl %in% eval(input_checkboxgroup(mtcars$cyl, 
                                           selected = "4"))) %>% 
但是,如果包含该行,则整行cyl将显示为一个输入选项,并选择所有出现的4。但它现在将运行。因此,唯一缺少的是使为选择提供的值唯一:

filter(cyl %in% eval(input_checkboxgroup(choices = unique(mtcars$cyl), 
  selected = "4"))) %>%

现在您有了如上所述的更正代码,并且您知道第一个错误中的“列表”是“input_checkboxgroup”所期望的列表,无法计算,因为它在运行代码时不存在,因此无法强制加倍。

您可能需要使用
库(lazyeval)
或查看
库(dplyr);help(“nse”)
您可能需要使用
库(lazyeval)
或查看
库(dplyr);help(“nse”)
不幸的是,同样的错误仍然存在。您是否在没有出现错误的情况下运行了它?很抱歉,忘记将
dplyr
添加到要加载的包中。请您再试一次,将代码片段保留在编辑过的答案中?非常感谢。我不明白。包含dplyr如何使列表正确地强制为doubles?@Amitai希望我能够解释我认为在编辑问题时发生了什么。不幸的是,同样的错误仍然存在。您是否能够在没有出现错误的情况下运行它?抱歉,忘记将
dplyr
添加到要加载的包中。请您重试,并将片段保留在编辑后的答案中?谢谢很多。我不明白。包含dplyr如何使列表正确地强制成为双倍向量?@Amitai希望我能够解释我认为在编辑问题时发生了什么。
  ggvis(~mpg, ~wt) %>% 
Error in filter(., cyl %in% eval(input_checkboxgroup(cyl, selected = "4"))) : 
  (list) object cannot be coerced to type 'double'
filter(cyl %in% eval(input_checkboxgroup(cyl, selected = '4'))) %>% 
selected_cyl <- mtcars %>%
  filter(cyl %in% '4')
Error in match(x, table, nomatch = 0L) : object 'cyl' not found
library(dplyr)
selected_cyl <- mtcars %>%
  filter(cyl %in% '4')
Error in lapply(obj, function(val) { : object 'cyl' not found
filter(cyl %in% eval(input_checkboxgroup(mtcars$cyl, 
                                           selected = "4"))) %>% 
filter(cyl %in% eval(input_checkboxgroup(choices = unique(mtcars$cyl), 
  selected = "4"))) %>%