首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中,如何对另一个等长向量的元素有条件地填充向量的元素?

在R中,如何对另一个等长向量的元素有条件地填充向量的元素?
EN

Stack Overflow用户
提问于 2022-09-08 15:45:34
回答 1查看 25关注 0票数 1

我有一个向量,purity,它包含10,000个金块的纯度(作为字符串)。

代码语言:javascript
复制
purity <- sample(c("pure","high","medium","low"), 10000, replace = TRUE) 

我想要生成第二个向量'coef',这样coef中的元素n的值依赖于purity中的元素n的值,而purity中的“纯”、“高”、“中等”和“低”分别对应于coef中的1.0、0.8、0.5和0.2。

下面是一对向量,包括手动生成的和length=5,说明了我的目标。

代码语言:javascript
复制
    > purity <- c("medium", "high", "low", "high", "pure")
    > coef   <- c( 0.5,      0.8,    0.2,   0.8 ,   1.0)     #spaces added for legibility
    > purity
    [1] "medium" "high"   "low"    "high"   "pure"     
    > coef
    [1] 0.5 0.8 0.2 0.8 1.0

如何使此过程自动化?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-08 15:47:00

我们可以使用match或命名向量进行替换。puritycoef是用来匹配较长的向量'purity1‘的key/value对。当我们使用setNames时,它在coef上创建一个命名向量,该向量将用于与相应的“purity1”值匹配,以返回对应于该匹配的“coef”值。

代码语言:javascript
复制
out <- unname(setNames(value, key)[purity])

-checking输出

代码语言:javascript
复制
> head(purity)
[1] "low"    "pure"   "pure"   "low"    "medium" "high"  
> head(out)
[1] 0.2 1.0 1.0 0.2 0.5 0.8

哪里

代码语言:javascript
复制
purity <- sample(c("pure","high","medium","low"), 10000, replace = TRUE) 
key <- c("low", "medium", "high",  "pure")
value   <- c(0.2, 0.5,  0.8, 1.0) 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73651835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档