R语言matrix命名报错:数组长度不匹配、参数未使用问题咨询
R矩阵行列命名两类报错的解决方案
1. 创建矩阵时提示列名相关参数未使用报错
错误代码
my_matrix3<-matrix(0,nrow=3,ncol=3,byrow=TRUE,dimnames=c("row1", "row2", "row3"),c("col1","col2", "col3"))
报错原因
matrix()函数的dimnames参数要求传入*长度为2的列表结构,两个元素分别对应行名、列名的字符向量。你将列名向量作为独立参数写在dimnames参数外侧,属于matrix()未定义的冗余参数,因此触发参数未使用报错。
修正代码
my_matrix3<-matrix(0,nrow=3,ncol=3,byrow=TRUE,dimnames = list(c("row1", "row2", "row3"), c("col1","col2", "col3"))
2. 列名赋值时报'dimnames'[2] not equal to array
错误代码
DTM<-matrix(0,nrow=length(text), ncol=length(dictionary)) colnames(DTM)<-list(dictionary)
报错原因
colnames()赋值要求右侧传入和矩阵列数等长的字符向量。你对字符向量dictionary额外套了一层list(),会生成一个长度为1的列表(列表的第一个元素才是长度匹配的字符向量),赋值时列表长度和矩阵列数不匹配,因此触发维度不匹配报错。
如果dictionary是strsplit()输出的结果,strsplit()默认返回列表结构,也会出现相同问题。
修正代码
- 如果
dictionary本身是字符向量:colnames(DTM) <- dictionary - 如果
dictionary是strsplit()返回的列表:colnames(DTM) <- dictionary[[1]]
内容的提问来源于stack exchange,提问作者ksrm
相关产品推荐
相关产品推荐

