矩阵是具有尺寸的向量,我可以创建一个矩阵
m = matrix(list(rep(character(0),4)),nrow = 2,ncol = 2)
必不可少的是具有尺寸的列表:
str(m)
List of 4
...
- attr(*, "dim")= int [1:2] 2 2
我想将此矩阵转换为类似的矩阵:
m = matrix(rep(character(0),4),nrow = 2,ncol = 2)
其必不可少的是具有以下特征的字符向量:
str(m)
chr [1:2, 1:2] NA NA NA NA
此转换至关重要,因为许多函数可以轻松处理向量并返回一个简单的向量,但是这些函数本身无法处理列表(除非您使用apply / lapply会为您提供列表结果,经过多次操作后,您将获得列表由另一个列表包裹)
答案 0 :(得分:0)
实际上,我已经弄清楚了如何将列表矩阵转换为字符矩阵: 这是我的步骤:
#initialize
m = matrix(list(rep(character(0),4)),nrow = 2,ncol = 2)
#convert to dataframe to fortify its' 2 col 2 row shape
m = as.data.frame(m)
#unlist it and fill into the 2 col 2 row shape in data.frame
m[] = lapply(m,function(x){sapply(x,function(y)
{ifelse(length(y)==1,y,NA)})})
#convert it to matrix
m = as.matrix(m)
或更简单地说:
m2 = matrix(character(0),nrow = nrow(m),ncol = ncol(m))
m2[] = sapply(m,function(x){ifelse(length(x)==1,x,NA)})
唯一的问题是矩阵的字符(0)已更改为NA,我认为这是一个好主意,本质含义是相同的,对于NA,我们有更多的处理方式
@John Coleman的观点我也很难忘,一个问题可能有另一条简单的溶质路径,我自己也在考虑这个问题,如果我找到解决方案,我也会在这里发布。但是对于这个问题本身,就可以解决。