You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言循环中拼接glue字符串输出不符合预期该如何解决?

问题根源

glue_data()会对输入数据框的每一行生成一个对应字符串,返回和行数等长的字符串向量。你当前代码中直接将长度为1的code_A和长度为3的code_B传入paste()拼接时,R会自动循环补齐短向量,导致每个code_A被重复3次,最终输出就出现了你遇到的按列B取值分组重复列A标题的问题。

解决方法

在拼接前先将code_B的多个字符串折叠为单个长字符串即可,修改后代码如下:

#Reproduible example
#sample dataframe
library(dplyr)
library(glue)

col_A <- rep(c("one","two", "three", "four") ,each = 3)
col_B <- rep(c("yes", "No", "Maybe"),times = 4)

df <- bind_cols(a = col_A, b = col_B)

glucode_combined <- "" # Initialize empty string

# the loop over values to create a flexdashboard

for (i in unique(df$a)){

  code_A <- glue(
    "{i} \n",
    "======================================================================= \n",
  )

  code_B <- df %>% 
    filter(a == i) %>% 
    arrange(b) %>%
    glue_data(
      "------------------------------------- \n",
      "> ColumnA: {a} | ColumnB: {b} \n",
      "------------------------------------- \n",
      " \n",
    ) %>% 
    paste(collapse = "\n") # 新增折叠代码,把对应列A的所有列B分块拼成单个字符串
        
  glucode_combined <- paste(glucode_combined, code_A, code_B, sep = "\n")
}

writeLines(glucode_combined,"glucode_combined.txt")

修改后运行代码即可得到你预期的输出格式:每个列A的唯一值仅输出一次标题,后面紧跟该值对应的所有列B的分块内容。

内容的提问来源于stack exchange,提问作者ok1more

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 06:36:03