我尝试编写一个包含dplyr :: case_when()函数的简单函数.我在https://cran.r-project.org/web/packages/dplyr/vignettes/programming.html上阅读了dplyr文档的编程,但无法弄清楚它如何与case_when()函数一起工作.
我有以下数据:
data <- tibble(
item_name = c("apple", "bmw", "bmw")
)
Run Code Online (Sandbox Code Playgroud)
以下列表:
cat <- list(
item_name == "apple" ~ "fruit",
item_name == "bmw" ~ "car"
)
Run Code Online (Sandbox Code Playgroud)
然后我想写一个函数,如:
category_fn <- function(df, ...){
cat1 <- quos(...)
df %>%
mutate(category = case_when((!!!cat1)))
}
Run Code Online (Sandbox Code Playgroud)
不幸的是category_fn(data,cat),在这种情况下会给出评估错误 我想获得与通过以下方式获得的输出相同的输出:
data %>%
mutate(category = case_when(item_name == "apple" ~ "fruit",
item_name == "bmw" ~ "car"))
Run Code Online (Sandbox Code Playgroud)
这样做的方法是什么?
我创建了以下 Rmarkdown 文件,以根据单击交互式 ggplot 进行选择。
\n在 javascript 块中,我想使用从
交互式 ggplot 中的 onclick 事件获得的字母(A 或 B)来代替“A”。如果用户单击多边形 B,则“A”应变为“B”。
---\noutput:\n html_document\n---\n\n```{r, echo = FALSE, message = FALSE}\nlibrary(ggplot2)\nlibrary(ggiraph)\n\n# Rectangle A\ngroup_A <- data.frame(x1 = 0, \n x2 = 3, \n y1 = 0, \n y2 = 1, \n r = "A")\n\n# Polygon B\ngroup_B <- data.frame(x = c(3,4,4,0,0,3), \n y = c(0,0,2,2,1,1), \n r = "B")\n\np <- ggplot() + \n geom_rect_interactive(data = group_A, \n aes(xmin = x1, xmax = x2, ymin = y1, \n …Run Code Online (Sandbox Code Playgroud) 假设我有以下列表:
org <- list(1L, c(1L,2L), 2L, c(1L,3L), c(1L,2L,3L), c(2L,3L), 3L, 4L)
str(org)
#> List of 8
#> $ : int 1
#> $ : int [1:2] 1 2
#> $ : int 2
#> $ : int [1:2] 1 3
#> $ : int [1:3] 1 2 3
#> $ : int [1:2] 2 3
#> $ : int 3
#> $ : int 4
Run Code Online (Sandbox Code Playgroud)
现在我想用完整的集合获取列表中的位置。因此,在示例中,位置 1,2,3,4,6,7 都是列表中第 5 个元素的子集。列表中的第 8 个元素不是列表中其他元素的子集。所以,我想返回这些元素的位置。在这种情况下:5 和 8。
compl <- c(5, 8)
Run Code Online (Sandbox Code Playgroud)
我可以使用 data.table …