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

如何基于另一data.frame存储的下标一次性子集化data.frame

解决方案:用矩阵下标一次性提取多位置元素

这问题其实很好解决,R里的data.frame支持直接用矩阵作为下标,来一次性提取多个(row, column)对应位置的元素,完全不用分开提取再合并!

步骤说明

  1. 把存储下标的sub数据框转换成矩阵格式(矩阵的每一行刚好对应一组行、列坐标)
  2. 直接用这个矩阵作为索引传入df[],就能得到目标结果

完整代码示例

先重现你的原始数据:

set.seed(1)
x <- rnorm(5)
df <- data.frame(x,x*x, x*2, x/2)
sub <- data.frame(row = c(1,2), col = c(3,4))

然后执行提取操作,一行代码搞定:

df[as.matrix(sub)]

运行后会直接返回你想要的结果:

[1] -1.25290762  0.09182166

原理补充

当用矩阵作为data.frame的索引时,矩阵的每一行代表一个(行号, 列号)的坐标对,R会按顺序提取每个坐标对应的元素,最终返回一个向量,完美匹配你的需求。如果不想单独定义矩阵变量,直接在索引里转换即可,省去额外步骤~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:37:19