r - 从另一个矩阵中以特定顺序获取矩阵的标题
问题描述
我想要一个带有标题的矩阵。我生成矩阵如下
res.var <- matrix(nrow = 2, ncol = 4)
res.var <- as.data.frame(res.var)
我想以特定顺序从另一个数据框中获取列名。我从另一个数据框中获取列名的顺序。
列名是
column.names <- c("a", "b", "c", "d", "e")
column.names <- as.data.frame(column.names)
顺序/位置是
position.vec <- c(3, 4, 5, 2)
position.vec <- as.data.frame(position.vec)
我尝试按如下方式连接两个矩阵:
j <- 1
l <- 4
while (j <= l) {
names(res.var)[j] <- column.names[position.vec[j, 1], ]
j <- j + 1
}
有谁知道我的错误在哪里?
结果,我期望这样的表
resulting.table <- matrix(nrow = 2, ncol = 4)
resulting.table <- as.data.frame(resulting.table)
names(resulting.table) <- c("c", "d", "e", "b")
另外,有没有办法在没有循环的情况下做到这一点?
解决方案
我们可以通过根据提取来setnames
命名res.var
column.names
position.vec
setNames(res.var, column.names[position.vec$position.vec,])
# c d e b
#1 NA NA NA NA
#2 NA NA NA NA
如果我们决定保留column.names
和position.vec
作为向量
res.var <- matrix(nrow = 2, ncol = 4)
res.var <- as.data.frame(res.var)
column.names <- c("a", "b", "c", "d", "e")
position.vec <- c(3, 4, 5, 2)
我们可以改为
names(res.var) <- column.names[position.vec]
如果我们想将它们保留为数据框,我们可以这样做
names(res.var) <- column.names[position.vec$position.vec,]
推荐阅读
- laravel - 使用 Google Drive API 在 Laravel 中删除文件
- xpath - 如何忽略 xPath 中的不可见元素?
- python - TypeError: __init__() 得到了一个意外的关键字参数 'dir'
- c# - Ocelot 没有将 websockets 传递给微服务
- office-js - 本地化函数参数和名称
- javascript - 带有隐藏列的 jquery.dataTables 使我的 JQuery 崩溃
- asp.net-core - 如何提高asp.net core的IIS证书认证性能
- python - 如何保持python程序运行直到它被用户和python文件处理关闭
- javascript - Vuejs API 缩进
- javascript - 如何将字体 URI 加载到 shadowDOM 中