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

如何将字符向量中的"COMPARTMENT_START"替换为xy(y取自DataFrame采样值)

嘿,我来帮你搞定这个替换需求!你需要把文本向量里的COMPARTMENT_START短语替换成x加上从DataFrame中采样的数字,下面是具体的实现步骤和代码:

1. 整理输入数据

首先先把你提供的输入结构修正成可直接在R中运行的DataFrame(原输入里有一些格式小问题,我已经调整好了):

# 整理后的输入数据
report_data <- structure(
  list(report = c(
    "COMPARTMENT_START duod biospies taken WritePathReport NUMBER OF BIOPSIES: biopsied x8 COMPARTMENT_END",
    "COMPARTMENT_START duod biospies taken",
    "COMPARTMENT_START oesophagus biospies taken WritePathReport NUMBER OF BIOPSIES: character(0) COMPARTMENT_END",
    "COMPARTMENT_START duod biospies taken",
    "COMPARTMENT_START duod bi..."
  )),
  class = "data.frame"
)
2. 准备采样用的DataFrame

假设你已经有一个包含数字列的DataFrame,这里先创建一个示例(你可以替换成你实际的DataFrame):

# 示例:包含可采样数字的DataFrame
sample_df <- data.frame(available_numbers = 1:20)
3. 执行采样与替换

我们可以用stringr包的str_replace函数(或者base R的gsub)来完成替换,同时为每个文本条目匹配一个采样得到的数字:

# 加载stringr包(如果没安装先运行install.packages("stringr"))
library(stringr)

# 采样:为每个report条目获取一个数字,replace=TRUE允许重复采样
sampled_numbers <- sample(sample_df$available_numbers, nrow(report_data), replace = TRUE)

# 批量替换:将每个文本中的COMPARTMENT_START替换为x+采样数字
report_data$modified_report <- mapply(
  function(text, num) str_replace(text, "COMPARTMENT_START", paste0("x", num)),
  report_data$report,
  sampled_numbers
)

# 查看结果
print(report_data$modified_report)

如果不想依赖stringr,用base R也能实现:

# base R版本的替换
report_data$modified_report_base <- mapply(
  function(text, num) gsub("COMPARTMENT_START", paste0("x", num), text),
  report_data$report,
  sampled_numbers
)
小提示
  • 如果需要不重复采样,把sample()函数里的replace=TRUE改成replace=FALSE,但要确保你的采样DataFrame里的数字数量≥report条目的数量哦。
  • 如果你的采样DataFrame需要先筛选特定范围的数字,可以先做过滤,比如sample_df %>% filter(available_numbers > 5)再采样。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:18:13