我在 @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 = 参数并不能解决问题。
所以我想我必须修改这个功能?
有这个向量:
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)
我不知道该怎么做!
拥有这个基本的闪亮应用程序:我想将我的标题放置在标题中,如下图红色所示:
已经有一些解决方案 在闪亮的仪表板标题右侧添加文本 ,但我想知道是否有更“直接”的方法?
@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)
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) 我想为这个修改后的 dplyr 过程创建一个自定义函数:
library(dplyr)
mtcars %>%
mutate(mpg = replace(mpg, sample(row_number(),
size = ceiling(0.3 * n()), replace = FALSE), NA))
Run Code Online (Sandbox Code Playgroud)
参数应该是:
到目前为止我的方法:
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) 英里/加仑的中位数为 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) 这个问题的灵感来自这个问题: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, …
所以假设我掷了 5 个骰子。
模拟卷的代码是
Rolls<-sample(1:6, 5, replace=TRUE)
那就是如果我想将我的卷存储在 object 下Rolls。
现在让我们说出于某种原因我不希望有超过 2 个 6。这意味着,例如,如果我滚动 6 3 5 6 6 1,我是否能够将 6 个值之一重新滚动为新值,以便只有 2 个值为 6 的值和 4 个不是 6 的值?
任何支持将不胜感激。
提前致谢
我有这个数据框:
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) 我有以下带字符串的向量:
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
我怀疑这可能很容易,但我无法得到它。
我想学习正则表达式模式!
这是How to pass a reactiveplot generated in Shiny to Rmarkdown to generateddynamic reports的后续问题
我试图将用户输入传递给textInput的filename参数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) 我想画一个仅以 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)