nearPoints 被 .data 搞糊涂了:xvar 不在输入名称中

nearPoints gets confused by .data: xvar not in names of input

以下代码不起作用:

library(ggplot2)
library(shiny)
shinyApp(ui=fluidPage(
            plotOutput("plot", click="clicked"),
            tableOutput("near")),
         server=function(input, output, session) {
           df <- data.frame(x=rnorm(100), y=rnorm(100))
           output$plot <- renderPlot({
             ggplot(df, aes(x=.data$x, y=.data$y)) + geom_point()
           })

           output$near <- renderTable({
             nearPoints(df, input$clicked)
           })    
         })

单击图上的某个点时,出现以下错误:

nearPoints: `xvar` ('.data$x')  not in names of input

如果不是上面的ggplot语句,则使用下面的语句

ggplot(df, aes(x=x, y=y)) + geom_point()

一切正常。

我在aes()中使用data$x(或data[["x"]],这也会报错)的原因是这段代码在包内,而data[["x"]] 用于消除 R 包检查警告(如 programming with dplyr 中所述)。我可以在绘图函数中绕过这个问题,而不是在我正在处理的闪亮应用程序中(例如,通过定义虚拟变量 x 和 y),但首先,这并不优雅,其次,如果有一天我有一个绘图函数怎么办来自另一个使用类似技巧的包?

我的问题:如何在不 修改 ggplot 语句的情况下使上述代码 正常工作?

可以在nearPoints函数中指定xvaryvar,即

nearPoints(df, input$clicked, xvar="x", yvar="y")