R语言读取CSV数据框转换为保留原始结构矩阵的问题
问题根因
你遇到的行列结构错乱问题是matrix()函数的默认处理逻辑导致的:直接向matrix()传入数据框时,函数会先将数据框按列拆解为一维向量,再按列优先的规则填充新矩阵,因此会完全打乱CSV原始的行列对应关系。
正确实现方法
优先使用R原生的as.matrix()方法,该方法针对数据框(包括read_csv返回的tibble格式)的实现会完全保留原始的行列结构、列名属性:
# 读入CSV df <- read_csv('filepath') # 直接转换为矩阵,完整保留CSV原始结构 m <- as.matrix(df)
转换后得到的矩阵和CSV结构完全一致,输出示例如下:
state1 state2 state3 [1,] 1 0 0 [2,] 1 0 0 [3,] 0 0 1
额外可选操作
- 如果你不需要保留原CSV的列名,可以调用
unname()去除属性:m <- unname(as.matrix(df)) - 如果你坚持要用
matrix()函数实现,需要手动指定行列数和填充逻辑:m <- matrix(t(df), nrow = nrow(df), byrow = TRUE, dimnames = list(NULL, colnames(df)))
内容的提问来源于stack exchange,提问作者Ehren
相关产品推荐
相关产品推荐

