across()请参阅( https://dplyr.tidyverse.org/reference/across.html )的文档,您可以使用参数指定从 dplyr 动词返回的名称.names。可视化
iris %>%
group_by(Species) %>%
summarise(across(starts_with("Sepal"), mean, .names = "mean_{.col}"))
#> `summarise()` ungrouping output (override with `.groups` argument)
#> # A tibble: 3 x 3
#> Species mean_Sepal.Length mean_Sepal.Width
#> <fct> <dbl> <dbl>
#> 1 setosa 5.01 3.43
#> 2 versicolor 5.94 2.77
#> 3 virginica 6.59 2.97
Run Code Online (Sandbox Code Playgroud)
但是,当我使用 purr 风格的匿名函数时,我收到一个错误:
iris %>%
group_by(Species) %>%
mutate(across(contains(".Width"), ~.x - mean(.x), .names = "residual_{.col}"))
#> Error: Problem with `mutate()` input `..1`.
#> x glue cannot …Run Code Online (Sandbox Code Playgroud) 我无法在 Shiny 应用程序中使用 Crosstalk 包中的函数。运行时,我收到一条错误消息,指出找不到我的 SharedData 对象。
我想创建一个闪亮的应用程序,用户可以通过多种方式进行过滤(selectInput、选择数据表中的行等),但无论过滤方法如何,所有表格、图表和地图都会同时更新。我听说串扰对此有好处,并且我依赖此处的火山示例作为模板。
我的问题是,当我尝试运行我的应用程序时,我收到一条警告,指出找不到 SharedData 对象。我尝试将其放在服务器部分,并尝试将其放在reactive、eventReactive、observe、observeEvent等中,但这些没有任何区别。我还尝试将代码放置在用户界面和服务器部分之外,但唯一的区别是我的错误现在是“‘环境’类型的对象不可子集化”。
以下不是我的原始代码;我通过共享以下内容简化了问题并使其可重现:*从 Rstudio 创建了一个新的 Shiny 应用程序(模板使用忠实数据集)*将数据集从忠实数据集修改为 iris *添加了对串扰库的调用*包括 filter_select, SharedData 调用 *修改第 48 行以引用共享_df 而不是 iris
library(shiny)
library(crosstalk)
# Define UI for application that draws a histogram
ui <- fluidPage(
# Application title
titlePanel("Crosstalk test"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
sliderInput("bins",
"Number of bins:",
min = 1,
max = 50,
value = 30),
filter_select("rows", "Select rows:",
shared_df,
~Species,
multiple = TRUE) …Run Code Online (Sandbox Code Playgroud) 使用dplyr通过各种辅助功能(例如)选择列很简单contains()。在这些功能的帮助文件中,该参数称为“文字字符串”。但是,可以改用正则表达式吗?
以下示例起作用:
library(dplyr)
iris %>%
select(contains("Species"))
Run Code Online (Sandbox Code Playgroud)
以下正则表达式示例不:
# Select all column names that end with lower case "s"
iris %>%
select(contains("s$"))
# Not run
data frame with 0 columns and 150 rows
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以在dplyr select helper函数中使用正则表达式,如果可以,则可以实现它们。
如果这不可能,那么我将使用替代方法(例如,base或data.table)进行回答。对于背景,我的最终目标是使用一个summarise_at()函数或等效项求和以数字结尾的所有列(即regexp [0-9]$)。
我依靠此处找到的代码块创建一个闪亮的应用程序来上传表格,编辑表格,然后下载表格。我已经成功编辑了一个已经加载到内存(iris)中的表格,但是如何编辑要在 Shiny 中上传的表格?。
我已经尝试了上面链接中的代码并验证它是否有效。我也尝试过下面的代码,这也有效。我无法实现的是将数据帧转换x为分配给上传文件的反应对象,并x相应地编辑所有引用。
# This code works, but lacks a fileinput object
# and needs to be amended for a reactive dataframe...
library(shiny)
library(DT)
shinyApp(
ui = fluidPage(
fluidRow(
# ~~ add fileInput("file1", "Choose file") here ~~
downloadButton("download")
),
fluidRow(
DT::dataTableOutput('x1')
)
),
server = function(input, output, session) {
# Do I make x reactive?
x = iris
x$Date = Sys.time() + seq_len(nrow(x))
output$x1 = DT::renderDataTable(x, selection = 'none', rownames = …Run Code Online (Sandbox Code Playgroud)