r - R通过将名称与df列值匹配来填充向量
问题描述
我有一个用零填充的命名向量
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
推荐阅读
- server - 错误:找不到模块。请验证 package.json 是否有有效的“main”条目
- archlinux - 如何安装“mka”程序?
- embedded-linux - 用c写的u-boot代码是如何执行的?
- python - 如何使来自 tfrecord 的数据集与名称匹配 keras 输入
- c++ - C++ std::filesystem::directory_iterator cout 是否带有附加引号?
- c# - 如何使用 C# 在 Ubuntu 中的指定路径中创建文件
- android - 在kotlin android中实现JS的时刻API
- node.js - 如何运行节点应用程序的不同实例
- validation - 想要在验证提取到 gcs 存储桶中的文件名后生成一封电子邮件
- embedded-linux - 设备树中的内存映射节点未显示在 /proc/iomem 中