在循环中使用glue和dplyr获取关卡名称

2024-01-01

我试图在循环中使用 dplyr 和胶水从表中获取级别名称(我使用循环是因为我获得大量变量来获取分组表和单个表),我在下面显示了一个示例:

library(dplyr)
library(glue)
var=c( "vs", "am")
for(i in var) {
bd=mtcars%>%
group_by(carb) %>%
 count_(i) %>%
      mutate(descripcion = glue("carb number:{carb} in: {i} with freq: {n},"))
print(bd) 
print(bd$descripcion)
}

我的结果:

组: 碳水化合物 [6]

   carb    vs     n descripcion                       
  <dbl> <dbl> <int> <chr>                             
1     1     1     7 carb number:1 in: vs with freq: 7,
2     2     0     5 carb number:2 in: vs with freq: 5,
3     2     1     5 carb number:2 in: vs with freq: 5,
4     3     0     3 carb number:3 in: vs with freq: 3,
5     4     0     8 carb number:4 in: vs with freq: 8,
6     4     1     2 carb number:4 in: vs with freq: 2,
7     6     0     1 carb number:6 in: vs with freq: 1,
8     8     0     1 carb number:8 in: vs with freq: 1,
[1] "carb number:1 in: vs with freq: 7," "carb number:2 in: vs with freq: 5,"
[3] "carb number:2 in: vs with freq: 5," "carb number:3 in: vs with freq: 3,"
[5] "carb number:4 in: vs with freq: 8," "carb number:4 in: vs with freq: 2,"
[7] "carb number:6 in: vs with freq: 1," "carb number:8 in: vs with freq: 1,"
# A tibble: 9 x 4
# Groups:   carb [6]
   carb    am     n descripcion                       
  <dbl> <dbl> <int> <chr>                             
1     1     0     3 carb number:1 in: am with freq: 3,
2     1     1     4 carb number:1 in: am with freq: 4,
3     2     0     6 carb number:2 in: am with freq: 6,
4     2     1     4 carb number:2 in: am with freq: 4,
5     3     0     3 carb number:3 in: am with freq: 3,
6     4     0     7 carb number:4 in: am with freq: 7,
7     4     1     3 carb number:4 in: am with freq: 3,
8     6     1     1 carb number:6 in: am with freq: 1,
9     8     1     1 carb number:8 in: am with freq: 1,
[1] "carb number:1 in: am with freq: 3," "carb number:1 in: am with freq: 4,"
[3] "carb number:2 in: am with freq: 6," "carb number:2 in: am with freq: 4,"
[5] "carb number:3 in: am with freq: 3," "carb number:4 in: am with freq: 7,"
[7] "carb number:4 in: am with freq: 3," "carb number:6 in: am with freq: 1,"
[9] "carb number:8 in: am with freq: 1,"

我的问题是我无法从本例中的 vs 和 am 变量中获取级别名称。 我的目标是让各个表按碳水化合物分组:

[1] "carb number:1 in:  vs 1 with freq: 7," "carb number:2 in:  vs 0 with freq: 5,"
   [3] "carb number:2 in:  vs 1 with freq: 5," "carb number:3 in:  vs 0 with freq: 3,"
   [5] "carb number:4 in:  vs 0 with freq: 8," "carb number:4 in:  vs 1 with freq: 2,"
   [7] "carb number:6 in:  vs 0 with freq: 1," "carb number:8 in:  vs 0 with freq: 1,"

我们可以使用paste0因为它是矢量化的。

library(dplyr)

mtcars%>% 
   count(carb, vs) %>%
   mutate(description = paste0("carb number: ",carb, " in: vs ", vs, 
                                " with freq: ", n))


#   carb    vs     n description                         
#  <dbl> <dbl> <int> <chr>                               
#1     1     1     7 carb number: 1 in: vs 1 with freq: 7
#2     2     0     5 carb number: 2 in: vs 0 with freq: 5
#3     2     1     5 carb number: 2 in: vs 1 with freq: 5
#4     3     0     3 carb number: 3 in: vs 0 with freq: 3
#5     4     0     8 carb number: 4 in: vs 0 with freq: 8
#6     4     1     2 carb number: 4 in: vs 1 with freq: 2
#7     6     0     1 carb number: 6 in: vs 0 with freq: 1
#8     8     0     1 carb number: 8 in: vs 0 with freq: 1

To use glue我们需要使用某个版本map from purrr

library(dplyr)
library(glue)
library(purrr)

mtcars%>% 
   count(carb, vs) %>%
   mutate(description = pmap_chr(list(carb, vs, n), function(a, b, c) 
             glue("carb number: ",{a}, " in: vs ", {b}, " with freq: ", {c})))

EDIT

如果我们有不同的列要计数,我们可以将变量转换为符号

var = c("vs", "am")
library(rlang)

map(var, function(x) mtcars%>% 
                       count(carb, !!sym(x)) %>%
                       mutate(description = paste0("carb number: ",carb, " in: ", 
                        x, " " , !!sym(x)," with freq: ", n)))

#[[1]]
# A tibble: 8 x 4
#   carb    vs     n description                         
#  <dbl> <dbl> <int> <chr>                               
#1     1     1     7 carb number: 1 in: vs 1 with freq: 7
#2     2     0     5 carb number: 2 in: vs 0 with freq: 5
#3     2     1     5 carb number: 2 in: vs 1 with freq: 5
#4     3     0     3 carb number: 3 in: vs 0 with freq: 3
#5     4     0     8 carb number: 4 in: vs 0 with freq: 8
#6     4     1     2 carb number: 4 in: vs 1 with freq: 2
#7     6     0     1 carb number: 6 in: vs 0 with freq: 1
#8     8     0     1 carb number: 8 in: vs 0 with freq: 1

#[[2]]
# A tibble: 9 x 4
#   carb    am     n description                         
#  <dbl> <dbl> <int> <chr>                               
#1     1     0     3 carb number: 1 in: am 0 with freq: 3
#2     1     1     4 carb number: 1 in: am 1 with freq: 4
#3     2     0     6 carb number: 2 in: am 0 with freq: 6
#4     2     1     4 carb number: 2 in: am 1 with freq: 4
#5     3     0     3 carb number: 3 in: am 0 with freq: 3
#6     4     0     7 carb number: 4 in: am 0 with freq: 7
#7     4     1     3 carb number: 4 in: am 1 with freq: 3
#8     6     1     1 carb number: 6 in: am 1 with freq: 1
#9     8     1     1 carb number: 8 in: am 1 with freq: 1

Or with for loop

for (i in var) {
   print(mtcars%>% 
           count(carb, !!sym(i)) %>%
           mutate(description = paste0("carb number: ",carb, " in: ", i, " " , 
                                  !!sym(i), " with freq: ", n)))
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在循环中使用glue和dplyr获取关卡名称 的相关文章

  • 如何使用 dplyr 的 filter() 和 R-base 的 ifelse() 过滤数据框?

    我的数据框df看起来像这样 Home Away Inning Boston NYC Top NYC Boston Bottom NYC Boston Top 我想使用 dplyr 的filter 制作一个数据框 从ifelse query
  • ggplot2 中列组合的分面图

    我正在做相关性的组合 并且想在 ggplot2 中绘制每个组合 然而 我希望每个组合都在一个单独的面板上 而不是一个面板上的所有点 making up columns in my real data I m doing correlatio
  • 如何按物种矩阵显示站点内植物物种生物量?

    我之前问过 如何将两列显示为二进制 存在 不存在 矩阵 这个问题得到了两个很好的答案 我现在想更进一步 在原始站点按物种列添加第三列 该列反映每个地块中每个物种的生物量 第 1 列 地块 指定约 200 个地块的代码 第 2 列 物种 指定
  • 调整 R 图的边距

    我对调整 R 图的边距很感兴趣 我在 MacOS 上使用 R Studio 在 2013 intel CPU Macbook pro 上运行 这是我用于生成绘图的数据 spins lt runif 50 min 0 max 50 这是我用来
  • Foreach Parallel - 多个输出的组合功能

    我有一组 45000 个用户和 40 多部电影的评分 我需要根据每个用户与其他用户的皮尔逊相关性来预测每个用户的新评分 我还需要存储相似用户的集合以及每个用户 电影组合的相似性 我使用 foreach 包并行执行循环 我设法编写的代码是这样
  • R 中的“CSS 中的非平稳季节性 AR 部分”错误

    我正在尝试拟合季节性分解系列的 ARIMA 模型 但是当我尝试执行以下操作时 fit arima diff series order c 1 0 0 seasonal list order c 1 0 0 period NA 它给我以下错误
  • 渲染函数的反应性参数

    我在 Flexdashboard 中有一个表 其列数可以更改 我可以动态计算列的对齐方式 默认对齐方式 23 45作为字符向量 因此左对齐该值 尽管它是一个数字并且应该右对齐 问题是我无法将此对齐传递回renderTable作为一个值ali
  • AWS DynamoDB 的 r 语言支持 [重复]

    这个问题在这里已经有答案了 这是对此的后续 更新问题 AWS dynamodb 支持 R 编程语言 https stackoverflow com questions 14224919 aws dynamodb support for r
  • 如何在 R 中编写 csv 文件,其中我的输入作为行写入文件?

    这是一个非常简单的问题 令我惊讶的是网上没有例子 我有一个向量 vector lt c 1 1 1 1 1 我想将其写为 csv 作为一个简单的行 write csv vector file myfile csv row names FAL
  • 使用 geom_bar 按列中一个特定值的计数对 y 轴进行排序

    想知道如何通过减少猕猴桃的数量来对 y 轴上的簇进行排序 df data frame df data frame matrix df nrow 200 ncol 2 colnames df lt c cluster name df clus
  • R 提交到 CRAN:构建包的 R 版本?

    我想向 CRAN 提交一个包裹 在里面CRAN 存储库政策 http cran r project org web packages policies html它指出 当发布新的 R x y 0 版本时 R CMD 检查给出 错误 的包将被
  • 修改 GGplot2 对象

    然而 我很好奇 是否可以添加任何特定的图例或将哪个物种对应于观察到的预期绘图中 以分别知道它是哪个圆圈 我目前使用的是一个名为 finches 的假数据集 该包称为 cooccurr 它创建一个 ggplot 对象 我很好奇如何实际编辑它以
  • R:data.table 与 merge(aggregate()) 性能

    或者更一般地说 它是DT SD by versus merge aggregate 话不多说 这里是数据和示例 set seed 5141 size 1e6 df lt data table a rnorm size b paste0 sa
  • 使用 RSQLite 在 R 中加载 SQLite 表

    我有这个函数用来加载 SQLite 表 sqLiteConnect lt function database table library DBI library RSQLite con lt dbConnect SQLite dbname
  • Foreach循环无法找到对象

    我正在尝试将 foreach 与并行后端结合使用来加速计算 用于特征选择的 AUCRF 随机森林的交叉验证 如果这确实重要的话 在这样做的过程中 我需要获取向量的子集 向量的名称可以更改 但可以作为字符向量进行访问 我使用 eval par
  • 按行重塑矩阵

    我有一个大小为 18000 x 54 的矩阵 我想将其重塑为大小为 54000 x 18 的矩阵 其中初始矩阵的每一行都变成一个有 3 行的矩阵 让我们举个例子 我有一个矩阵如下 a matrix 1 18 nrow 2 ncol 9 by
  • R strsplit 问题(容易解决吗?)

    这应该是一件很容易做到的事情 我在这里读到的类似示例有点复杂 而且这些技术对我来说并不真正有效 我有一个名为 id string 的变量 gt typeof id string 1 character and gt id string 1
  • rvest - 在 1 个标签中抓取 2 个类

    我是新来的 如何提取标签中具有 2 个类名或仅 1 个类名的元素 这是我的代码和问题 doc lt paste span class a1 b1 text1 span span class b1 text2 span library rve
  • 在 R 中使用 randomforest() 进行分类?

    我最初有一个由 N 行 12 列组成的数据框 最后一列是我的班级 0 或 1 我必须将整个数据框转换为数字 training lt sapply training temp as numeric 但后来我认为我需要将类列作为因子列来使用 r
  • 使用变量在 r 中像 aes_string 一样选择轴

    我试图提供一个带有列名的变量来创建一个plotly图表 类似于ggplot2 aes string 不知怎的 我被困住了 plot ly iris x Sepal Length y Sepal Width works as expected

随机推荐