r - 如何将矩阵转置为第二列,而第一列是第一个元素
问题描述
首先,我一生中从未编写过任何代码,而这周我只是在学习 R。我不确定标题是否清楚,但我想显示我的问题更容易:假设我有这个矩阵(m):
[,1] [,2] [,3] [,4]
[1,] A 1 2 3
[2,] B 1 4
[3,] C 3
基本上,A 包含 1、2 和 3,B 包含 1 和 4,依此类推。我将如何在只有 2 列的矩阵中显示它?
[,1] [,2]
[1,] A 1
[2,] A 2
[3,] A 3
[4,] B 1
[5,] B 4
[6,] C 3
非常感谢!
解决方案
假设显示的NA
空格是_ _rowSums
cbind
rep
t
NA
n <- rowSums(!is.na(m1[,-1]))
cbind(rep(m1[,1], n), na.omit(c(t(m1[,-1]))))
# [,1] [,2]
#[1,] "A" "1"
#[2,] "A" "2"
#[3,] "A" "3"
#[4,] "B" "1"
#[5,] "B" "4"
#[6,] "C" "3"
或者更紧凑的选项是复制带有col
索引的第一列,cbind
并使用t
其余列的排列,最后删除 NA 行na.omit
na.omit(cbind(m1[,1][col(m1[,-1])], c(t(m1[,-1]))))
# [,1] [,2]
#[1,] "A" "1"
#[2,] "A" "2"
#[3,] "A" "3"
#[4,] "B" "1"
#[5,] "B" "4"
#[6,] "C" "3"
注意:matrix
不能有多个列类型。所以,如果有一个字符类,所有的元素都转换为character
数据
m1 <- structure(c("A", "B", "C", "1", "1", "3", "2", "4", NA, "3",
NA, NA), .Dim = 3:4)
推荐阅读
- javascript - 如何将一些html类添加到特定的div?
- c++ - 为什么 g++-11 '-O2' 包含错误,而 '-O0' 没问题?
- reactjs - 将 react-select 与 react 服务器端渲染一起使用会产生问题
- python - Scraping时向MySQL插入数据时从最后一个索引开始
- mysql - 如何直接从 frm、myd、myi 文件中读取数据?
- c# - WPF DataGridCell ValidationErrors 的装饰器显示在错误的位置
- c++ - 如何将 mov RAX 转换为 lea RAX?
- docker - 如何使用入口路径 url 访问 keycloak 管理页面
- python - 'coin' 和 'player_1' 显示为 NoneType 变量,并且井字游戏板未显示在控制台中
- python - `re.finditer` 什么时候不能返回任何东西,但 string.index 可以?