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

如何基于向量t、c和t2自动生成对应向量c2?

解决方法

下面提供几种在R中根据t、c和t2生成目标向量c2的实用方法:

方法1:直接向量索引匹配

当t的元素是连续整数且与c的位置一一对应时,直接用t2作为索引提取c的对应值即可:

t <- c(1,2,3)
c <- c(0.9, 0.8, 0.4)
t2 <- c(1,1,1,2,2,3)

c2 <- c[t2]

运行后c2会得到目标结果c(0.9, 0.9, 0.9, 0.8, 0.8, 0.4)。

方法2:match()函数(通用场景)

如果t的元素不是连续整数、或者顺序混乱,用match()函数更稳妥——它会先找到t2每个元素在t中的位置,再用该位置提取c的对应值:

c2 <- c[match(t2, t)]

这个方法适配所有t与c存在一一对应关系的场景,不受t的元素顺序、类型限制。

方法3:dplyr包的recode()函数(tidyverse风格)

若习惯使用tidyverse工具链,可通过dplyr的recode()实现批量映射:

library(dplyr)
c2 <- recode(t2, !!!setNames(c, t))

其中setNames(c, t)会将t的元素设为名字、c的元素设为对应值,!!!用于展开这个命名向量完成映射。


内容的提问来源于stack exchange,提问作者Miguel Angel Arnau

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 08:32:03