r - 使用数据框作为对应表
问题描述
我有一个看起来像这样的数据库:
> database
[,1] [,2] [,3] [,4]
[1,] 1 2 1 1
[2,] 2 2 3 4
[3,] 4 4 4 1
还有一个对应表,它是一个数据框:
> corresp
number name
1 1 name1
2 2 name2
3 3 name3
4 4 name4
如何在不使用循环的情况下用数据库中的相应名称替换数字?
(用于复制:)
database <- rbind(c(1, 2, 1, 1),
c(2, 2, 3, 4),
c(4, 4, 4, 1))
corresp <- data.frame(number = c(1, 2, 3, 4),
name = c("name1","name2","name3","name4"))
解决方案
没有循环,甚至没有apply
:
database[] <- as.character(corresp$name)[match(database, corresp$number)]
database
# [,1] [,2] [,3] [,4]
#[1,] "name1" "name2" "name1" "name1"
#[2,] "name2" "name2" "name3" "name4"
#[3,] "name4" "name4" "name4" "name1"
推荐阅读
- html - 奇怪甚至用类而不是 html 标签
- c# - LINQ to Object - 如何为子组实现 WHERE 子句“如果至少有一个元素是”
- git - 如何将原始存储库的拉取请求合并到分叉存储库中?
- ios - 如何在 Moya 请求中通过 POST 请求传递原始 JSON 正文
- html - 如何在一行中放置不同尺寸的弹性物品?
- localization - 如何在 i18next 中处理粘着性语言(例如土耳其语、日语等)的不同后缀
- umbraco - Umbraco 版本 8 | 在哪里更改控制器以验证自定义模型?
- python - Python当生成器'yield'遇到'random'时
- bash - 为什么 bash 会修剪/更改输出中的字母顺序?
- reactjs - 如何使接收所有 3 个值的 useReducer 的文档示例工作?