小编Tar*_*Jae的帖子

如何将 mutate 与具有多个参数的自定义函数一起使用

我在 @jared_mamrot 的帮助下创建了这个自定义函数制作 dplyr 过程的自定义函数

它基本上采用一个数据框、一列和一个数字作为参数,并用 NA 替换该列中定义的值的百分比 (y):

my_func <- function(df,x,y){
  df %>%
    mutate({{x}} :=  replace({{x}}, sample(row_number(),  
                                           size = ceiling(y * n()), replace = FALSE), NA))
}
Run Code Online (Sandbox Code Playgroud)

现在我想将此函数应用于多个列mutate(across...

到目前为止我的尝试:

mtcars %>% 
  mutate(across(1:3, ~my_func(mtcars, ., 0.3)))
Run Code Online (Sandbox Code Playgroud)

这基本上完成了函数应该做的事情,但整个数据帧重复了 x 次。

我想要的是:

该函数只能应用于第 1:3 列。

添加.names = 参数并不能解决问题。

所以我想我必须修改这个功能?

r function dplyr across

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

字符串中有多少个数字是连续的

有这个向量:

vector <- c("236", "234", "", "12", "24", "3")

[1] "236" "234" ""    "12"  "24"  "3"
Run Code Online (Sandbox Code Playgroud)

我想检查每个元素中有多少个连续数字。

预期输出:

2 3 0 2 0 0
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么做!

numbers r sequence

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

将标题放置在闪亮仪表板的标题中

拥有这个基本的闪亮应用程序:我想将我的标题放置在标题中,如下图红色所示:

已经有一些解决方案 在闪亮的仪表板标题右侧添加文本 ,但我想知道是否有更“直接”的方法?

@matrixloading 的解决方案很有吸引力,但并不令人满意,因为文本前面有一个点:

library(shiny)
library(shinydashboard)

ui <- dashboardPage(
  dashboardHeader(title = "Basic dashboard"),
  dashboardSidebar(),
  dashboardBody(
    # Boxes need to be put in a row (or column)
    fluidRow(
      box(plotOutput("plot1", height = 250)),
      
      box(
        title = "Controls",
        sliderInput("slider", "Number of observations:", 1, 100, 50)
      )
    )
  )
)

server <- function(input, output) {
  set.seed(122)
  histdata <- rnorm(500)
  
  output$plot1 <- renderPlot({
    data <- histdata[seq_len(input$slider)]
    hist(data)
  })
}

shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

html r shiny shinydashboard bs4dash

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

dplyr: mutate a factor column with 3 levels to 3 logical columns with TRUE and FALSE

In the Iris dataset Species is a factor variable with 3 levels("setosa" "versicolor" "virginica"). I would like to create 3 additional columns named ("setosa" "versicolor" "virginica") with False and True as logical factor variable for each column. In short: I would like to dichotomize the levels of the variable Species in the Iris dataset into 3 new columns as a logical variable. My code works, but I wonder if there is a more straight way:

df <- iris %>%
  select(Species) …
Run Code Online (Sandbox Code Playgroud)

r transform dplyr

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

制作 dplyr 过程的自定义函数

我想为这个修改后的 dplyr 过程创建一个自定义函数:

在 R 数据框中用 NA 随机替换每组值的百分比

library(dplyr)
mtcars %>%
    mutate(mpg =  replace(mpg, sample(row_number(),  
           size = ceiling(0.3 * n()), replace = FALSE), NA))
Run Code Online (Sandbox Code Playgroud)

参数应该是:

  • df = 数据帧
  • x = 列
  • y = 双数(此处为 0.3)

到目前为止我的方法:

my_func <- function(df,x,y){
  df %>%
  mutate(x =  replace({{x}}, sample(row_number(),  
                                    size = ceiling(y * n()), replace = FALSE), NA))
}
Run Code Online (Sandbox Code Playgroud)

应用该功能时:

my_func(mtcars, mtcars$mpg, 0.3)

#gives:

                     mpg cyl  disp  hp drat    wt  qsec vs am gear carb    x
Mazda RX4           21.0   6 160.0 110 3.90 2.620 …
Run Code Online (Sandbox Code Playgroud)

r function dplyr

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

我们如何改变包含现有值的新列名

英里/加仑的中位数为 19.2。

在下一行中,我想将此信息(例如“19.2”)添加到新的突变列名称“median_dich”中。因此最后新的列名称应该是median_dich19.2.

我知道在这种特殊情况之外该怎么做。我的问题是直接获取中值并将其粘贴到新的变异列名称中?

到目前为止我已经尝试过:

#TRY 1
library(dplyr)
mtcars %>% 
  mutate(median_mpg = median(mpg)) %>% 
  mutate(glue("median_dich{median_mpg}") = ifelse(mpg > median_mpg, 1, 0))

#TRY 2
library(dplyr)
library(rlang)

mtcars %>%
  mutate(median_mpg = median(mpg)) %>%
  mutate(!!paste0("median_dich_", median_mpg) := ifelse(mpg > median_mpg, 1, 0))

#TRY 3
library(dplyr)
library(rlang)
library(glue)

mtcars %>%
  mutate(median_mpg = median(mpg)) %>%
  mutate(!!sym(glue("median_dich_{median_mpg}")) := ifelse(mpg > median_mpg, 1, 0))
Run Code Online (Sandbox Code Playgroud)

r dplyr mutate rlang r-glue

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

dplyr:如何对 group1 的 row1、group2 的 row2、group3 的 row3、...rowN 的 groupN 进行切片

这个问题的灵感来自这个问题:How to use conditional filtering of a data frame of a R in R when试图保留两列中的非重复值

我们如何在随后的组 (1,2,3,4...n) 中切片相应的行 (1,2,3,4....n)。在这个简化的例子中,第一个数据帧应该产生第二个:

library(tidyverse)
# tibble
df <- tibble(
  group = c(1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5),
  value = c(1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 5)
)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明 应该导致这个 在此处输入图片说明

到目前为止,我已经尝试了不同的选择slice喜欢slice(seq(1, …

r slice dplyr

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

改变掷骰子的值

所以假设我掷了 5 个骰子。

模拟卷的代码是

Rolls<-sample(1:6, 5, replace=TRUE)

那就是如果我想将我的卷存储在 object 下Rolls

现在让我们说出于某种原因我不希望有超过 2 个 6。这意味着,例如,如果我滚动 6 3 5 6 6 1,我是否能够将 6 个值之一重新滚动为新值,以便只有 2 个值为 6 的值和 4 个不是 6 的值?

任何支持将不胜感激。

提前致谢

r sample dice

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

如何在具有多个列对的数据框中按名称连接两对列并移动行

我有这个数据框:

     id    a1    a2    b1    b2    c1    c2
  <int> <int> <int> <int> <int> <int> <int>
1     1    83    33    55    33    85    86
2     2    37     0    60    98    51     0
3     3    97    71    85     8    44    40
4     4    51     6    43    15    55    57
5     5    28    53    62    73    70     9
Run Code Online (Sandbox Code Playgroud)
df <- structure(list(id = 1:5, a1 = c(83L, 37L, 97L, 51L, 28L), a2 = c(33L, 
0L, 71L, 6L, 53L), b1 = c(55L, 60L, 85L, 43L, …
Run Code Online (Sandbox Code Playgroud)

r dplyr tidyr

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

如何删除字符串中第一个非零数字之前的所有零

我有以下带字符串的向量:

strings <- c("ABC0001", "ABC02", "ABC10", "ABC01010", "ABC11", "ABC011", "ABC0120")

"ABC0001"  "ABC02"    "ABC10"    "ABC01010" "ABC11"    "ABC011"   "ABC0120" 
Run Code Online (Sandbox Code Playgroud)

期望的输出:

[1] "ABC1"    "ABC2"    "ABC10"   "ABC1010" "ABC11"   "ABC11"   "ABC120"
Run Code Online (Sandbox Code Playgroud)

我的问题:字符串中第一个整数之前的零的正则表达式模式是什么?

到目前为止我已经尝试过:

library(stringr)
str_replace(strings,'0+', "")
Run Code Online (Sandbox Code Playgroud)

这使:

[1] "ABC1"    "ABC2"    "ABC1"    "ABC1010" "ABC11"   "ABC11"   "ABC120" 
Run Code Online (Sandbox Code Playgroud)

ABC1注意:位置 3不需要。应该是ABC10 我怀疑这可能很容易,但我无法得到它。

我想学习正则表达式模式!

regex r

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

如何在 R 闪亮下载处理程序中将用户输入传递给文件名

这是How to pass a reactiveplot generated in Shiny to Rmarkdown to generateddynamic reports的后续问题

我试图将用户输入传递给textInputfilename参数downloadhandler

这个概念通常有效,但在这种情况下,这段代码不起作用:

本质上我想改变

filename = "report.html",

filename = paste0("my_new_name", input$text,"-" ,Sys.Date(), ".html"),

这是代码:

library(shiny)
library(radarchart)

shinyApp(
  ui = fluidPage(
    sliderInput("slider", "Slider", 1, 100, 50),
    textInput("text", "text"),
    downloadButton("report", "Generate report")
  ),
  server <- function(input, output) {
    output$plot1 <- renderChartJSRadar({
      chartJSRadar(skills[, c("Label", input$selectedPeople)], 
                   maxScale = 10, showToolTipLabel=TRUE) 
    })
    
    output$report <- downloadHandler(
      #filename = "report.html",
      filename = paste0("my_new_name", input$text,"-" ,Sys.Date(), ".html"),
      content …
Run Code Online (Sandbox Code Playgroud)

filenames r download shiny reactive

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

如何绘制一个以 R 为底的简单矩形

我想画一个仅以 R 为底的矩形:

矩形:宽度 = 2.5 厘米,高度 = 1 厘米

期望的输出:

在此输入图像描述

原则上这是可能的drawBox,但我正在寻找一个基本的 R 解决方案:

library(draw)
drawBox(x =1.5, y = 4, width = 2.5, height = 1)
Run Code Online (Sandbox Code Playgroud)

graphics r rectangles

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