r - 使用 `glue` 将一列中的变量替换为另一列中的变量

标签 r tidyverse r-glue

我试图保留一个数据框,如果我有用户的消息列表。我希望能够用我引用的列中的内容替换消息中的变量。

例如,这有效:

df <- data.frame(id = rep(1:3, each = 3),
                 this = rep(letters[1:3], each = 3),
                 that = rep(letters[24:26], each = 3),
                 foo = rep(c("apple", "pear", "banana"), each = 3))

df %>% mutate(message = glue("{this} is {that}"))

但这并不:


library(tidyverse)
library(glue)

verbiage <- data.frame(id = 1:3,
                       message = c("{this} is {that}", "{foo} is something", "something is {foo}"))

verbiage

df <- data.frame(id = rep(1:3, each = 3),
                 this = rep(letters[1:3], each = 3),
                 that = rep(letters[24:26], each = 3),
                 foo = rep(c("apple", "pear", "banana"), each = 3))

df

df %>% 
  inner_join(verbiage, by = "id") %>% 
  mutate(message = glue(message))

最佳答案

我们可以使用rowwise

library(glue)
library(dplyr)
df %>% 
   inner_join(verbiage, by = "id")  %>%
   rowwise %>% 
   mutate(message = as.character(glue(as.character(message))))
# A tibble: 9 x 5
# Rowwise: 
#     id this  that  foo    message            
#  <int> <fct> <fct> <fct>  <chr>              
#1     1 a     x     apple  a is x             
#2     1 a     x     apple  a is x             
#3     1 a     x     apple  a is x             
#4     2 b     y     pear   pear is something  
#5     2 b     y     pear   pear is something  
#6     2 b     y     pear   pear is something  
#7     3 c     z     banana something is banana
#8     3 c     z     banana something is banana
#9     3 c     z     banana something is banana

关于r - 使用 `glue` 将一列中的变量替换为另一列中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60877134/

相关文章:

r - 格式化 R 代码块中的文本

R - 改变表格的顺序

r - 如何使用 forcats::fct_explicit_na() 替换 data.frame 中的所有 <NA> 值?

r - 从数据框中提取最高的正值和负值,并使用 R 将它们填充到格式化文本中

rgdal/readOGR - 无法从 .zip 读取 shapefile

r - 将R的月份缩写转换为数字月份

r - 如何按组用第一个非缺失值填充缺失值?

r - 如何识别和统计R中的交叉项

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

r - 在用户定义的函数中使用胶水进行变异