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

R语言按向量匹配数据框对应行并对adj_coords列随机抽样

R数据框索引匹配与逐行随机抽样实现

输入数据说明

现有数据框df结构如下:

indx          adj_coords
1    1    2, 3, 4, 5, 6, 7
2    2   1, 3, 7, 8, 9, 10
3    3 1, 2, 4, 10, 11, 12
4    4 1, 3, 5, 12, 13, 14
5    5 1, 4, 6, 14, 15, 16
6    6 1, 5, 7, 16, 17, 18

向量vec定义如下:

vec <- c(1,4,5,3,1)

实现需求

  • 按vec中的元素匹配df里对应indx的adj_coords值,生成长度为5的新数据框
  • 对新数据框每行的adj_coords字符串拆分后随机抽取1个值,存入新增列sampled_adj_coords

实现代码

用R基础函数即可完成,无需安装第三方包:

# 步骤1:索引匹配生成初始结果表
result <- data.frame(
  vec = vec,
  adj_coords = df$adj_coords[match(vec, df$indx)],
  stringsAsFactors = FALSE
)

# 步骤2:逐行拆分逗号分隔的字符串,随机抽1个值
result$sampled_adj_coords <- sapply(
  strsplit(result$adj_coords, ", "),
  function(x) sample(x, 1)
)

如果需要固定抽样结果方便复现,在抽样代码前运行set.seed(任意整数作为随机种子)即可。如果adj_coords列是因子类型,提前运行df$adj_coords <- as.character(df$adj_coords)转成字符串类型再处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:09:13