You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将数据框转为矩阵时如何取消列表化并保留行列名?

解决方法:将字符型DataFrame转换为带行/列名的数值矩阵

你的问题核心有两个:一是原DataFrame里的数值实际是字符类型(从dput输出的字符串格式能看出来),二是unlist()会把DataFrame拆解成一维向量,转成矩阵后直接丢失了原有的行列结构与名称。

按下面的步骤就能轻松解决:

  1. 先把DataFrame的所有列转换为数值类型
  2. 再将转换后的DataFrame转为矩阵,行名和列名会自动保留

具体代码

# 把字符型DataFrame转为数值型DataFrame,保留行名
df_num <- data.frame(lapply(df, as.numeric), row.names = rownames(df))
# 转换为矩阵
mat <- as.matrix(df_num)

# 查看结果
> mat
           TCGA.2K.A9WE.01A TCGA.2Z.A9J1.01A TCGA.2Z.A9J3.01A TCGA.2Z.A9J5.01A TCGA.2Z.A9J6.01A
AAAS               3.333704          3.349254          3.303497          3.380963          3.368247
AARSD1             3.261916          3.325106          3.336665          3.385487          3.313931
AASS               2.980720          3.053135          3.089821          3.005199          3.282654
ABHD11             3.454424          3.630342          3.701725          3.574224          3.586874
ABHD14A            3.231475          3.240146          3.273832          3.434840          3.339303

更简洁的一步写法

也可以不用单独生成数值型DataFrame,直接一步转换:

mat <- as.matrix(sapply(df, as.numeric))

最终得到的矩阵会完整保留原DataFrame的行名、列名,同时所有元素都转为数值类型。

内容的提问来源于stack exchange,提问作者Anon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 22:10:18