小编RDa*_*vey的帖子

如何将 .names 与 dplyr mutate across 和匿名函数一起使用

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)

r dplyr purrr

8
推荐指数
1
解决办法
6468
查看次数

如何使用Shiny中的Crosstalk来过滤反应数据表?

我无法在 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)

r shiny

7
推荐指数
0
解决办法
3389
查看次数

如何在dplyr的select辅助函数中使用正则表达式

使用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]$)。

regex r dplyr

5
推荐指数
1
解决办法
84
查看次数

如何使用 DT 和 Shiny 从上传的文件中编辑表格?

我依靠此处找到的代码块创建一个闪亮的应用程序来上传表格,编辑表格,然后下载表格。我已经成功编辑了一个已经加载到内存(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)

r shiny dt

1
推荐指数
1
解决办法
1857
查看次数

标签 统计

r ×4

dplyr ×2

shiny ×2

dt ×1

purrr ×1

regex ×1