小编mha*_*nga的帖子

使用dplyr :: case_when进行整洁的评估编程

我尝试编写一个包含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)

这样做的方法是什么?

r lazy-evaluation dplyr nse

13
推荐指数
2
解决办法
822
查看次数

使用 javascript 基于交互式 ggplot 创建过滤器选择

我创建了以下 Rmarkdown 文件,以根据单击交互式 ggplot 进行选择。

\n

在 javascript 块中,我想使用从
交互式 ggplot 中的 onclick 事件获得的字母(A 或 B)来代替“A”。如果用户单击多边形 B,则“A”应变为“B”。

\n
---\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)

javascript r ggplot2 r-markdown ggiraph

3
推荐指数
2
解决办法
2172
查看次数

使用 data.table 在列表中查找完整集

假设我有以下列表:

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 …

r data.table

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