gpt4 book ai didi

R 通过将名称与 df 列值匹配来填充向量

转载 作者:行者123 更新时间:2023-12-02 08:07:32 26 4
gpt4 key购买 nike

我有一个用零填充的命名向量

toy1<- rep(0, length(37:45))
names(toy1) <- 37:45

我想用数据框中的计数数据填充向量

size    count
37 1.181
38 0.421
39 0.054
40 0.005
41 0.031
42 0.582
45 0.024

我需要帮助找到一种方法来将大小值与向量名称相匹配,然后将相应的计数值输入到该向量位置

最佳答案

可能很简单:

toy1[ as.character(dat$size) ] <- dat$count
toy1

# 37 38 39 40 41 42 43 44 45
#1.181 0.421 0.054 0.005 0.031 0.582 0.000 0.000 0.024

R 的赋值索引可以有字符值。如果您刚刚尝试使用原始列建立索引:

toy1[ dat$size ] <- dat$count

你会得到(就像我最初那样):

> toy1
37 38 39 40 41 42 43 44 45
0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 NA NA NA NA NA NA NA NA NA NA

NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 1.181 0.421

0.054 0.005 0.031 0.582 NA NA 0.024

发生这种情况是因为出现了数字索引,并且默认扩展了向量的长度以容纳最多 45 个数字。

对于一个数字不在 37:45 范围内的数据帧版本,我确实收到了使用 match 和 nomatch 为 0 的警告,但我也得到了预期的结果结果:

toy1[ match( as.character( dat$size), names(toy1) , nomatch=0) ] <- dat$count
#------------
Warning message:
In toy1[match(as.character(dat$size), names(toy1), nomatch = 0)] <- dat$count :
number of items to replace is not a multiple of replacement length
> toy1
37 38 39 40 41 42 43 44 45
1.181 0.421 0.054 0.005 0.031 0.582 0.000 0.000 0.000

match 函数是 merge 函数的核心,但此应用程序比数据帧的merge 快得多

关于R 通过将名称与 df 列值匹配来填充向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50162238/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com