如何基于Excel数据快速生成R语言matrix矩阵表?
问题场景
我持有一份存储相关数据的Excel文件,数据样例见下图:
我需要基于这些数据生成R语言矩阵对象,此前一直通过手动录入数值拼接向量的方式实现,示例代码如下:
table <- matrix(c(292, 289, 299, 333, 253, 260, 260, 284, 262, 326, 120, 108, 120, 116, 106, 102, 114, 127, 130, 155), ncol = 2)
当数据条目增长到数百条时,手动录入代码的效率极低,需要更高效的实现方案。
实现方法
完全不需要手动录入数值,直接从Excel源文件读取数据后转成矩阵即可,全程只需要3步:
- 安装并加载读取Excel的专用包
readxl,这是R生态里适配Excel格式最稳定的工具,不会出现格式错乱问题:
# 首次运行执行安装即可,后续使用不需要重复跑 install.packages("readxl") library(readxl)
- 读取本地Excel文件到R环境,把代码里的文件路径替换成你自己的文件存储位置,
sheet参数填要读取的工作表序号或者名称即可:
# 示例:读取文件里第一个工作表的全部数据 raw_df <- read_excel("C:/你的文件存储路径/数据文件.xlsx", sheet = 1)
- 将读取到的数据直接转换为矩阵,不需要手动拼接数值向量,可根据自己的数据结构选对应写法:
# 方案1:如果Excel里本身就是2列规整数值,直接转换即可 result_matrix <- as.matrix(raw_df) # 方案2:如果只需要提取表中指定数值列生成矩阵,比如提取第2、第3列 result_matrix <- as.matrix(raw_df[, c(2,3)]) # 方案3:如果需要把所有数值按顺序排成固定2列的矩阵,和手动录入的逻辑完全一致 result_matrix <- matrix(as.numeric(unlist(raw_df)), ncol = 2)
小提示:转换前可以运行
str(raw_df)检查读取到的列格式,如果混入文本类型的列会导致矩阵全部转成字符型,提前筛掉非数值的备注、多余表头列即可。
这种方法不管是几百条还是几万条数据,运行时间都在1秒以内,完全不需要手动录入任何数值。
内容的提问来源于stack exchange,提问作者BR27
相关产品推荐
相关产品推荐

