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

Posted

技术标签:

【中文标题】r - 使用 `glue` 将列中的变量替换为另一列中的变量
【英文标题】:r - use `glue` to substitute variables in a column with whats in another columnr - 使用 `glue` 将列中的变量替换为另一列中的变量
【发布时间】:2020-07-07 16:03:11
【相关技术】:@tags@
【问题描述】:

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

例如,这是有效的:

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

【问题讨论】:


【参考方案1】:

我们可以使用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

【讨论】:

谢谢。在我必须检查之前,我从未见过rowwiseglue 周围是否需要 as.character?没有它似乎工作正常。 @alexb523 在某些版本中,它会在没有as.character的情况下中断

以上是关于r - 使用 `glue` 将列中的变量替换为另一列中的变量的主要内容,如果未能解决你的问题,请参考以下文章

为另一列中的每个值选择一列中的最大值[重复]

Python:在一列中为另一列中的单个值显示多个值

将数据框特定列中的 Nan 值替换为另一个数据框特定列中的值

CodeIgniter 查询:如何将列值移动到同一行中的另一列并将当前时间保存在原始列中?

Postgres - 将列中的各种名称替换为相应的唯一标识符

用数字R替换列中的字符