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
函数中指定xvar
和yvar
,即
nearPoints(df, input$clicked, xvar="x", yvar="y")
以下代码不起作用:
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
函数中指定xvar
和yvar
,即
nearPoints(df, input$clicked, xvar="x", yvar="y")