【发布时间】:2018-08-15 11:37:07
【问题描述】:
矩阵是一种有维度的向量,我可以创建一个矩阵
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 给你一个列表结果,经过几次操作你得到一个列表被另一个列表包裹)
【问题讨论】:
-
你为什么要
character(0)? -
rep(character(0),4)是一个长度为 0(不是 4)的向量,所以matrix(rep(character(0),4),nrow = 2,ncol = 2)没有任何意义(因此NA)。您似乎想将有意义的东西(尽管没有动力)转换为根本没有意义的东西。请解释您要做什么。 -
这很有可能是XY problem。也许还有另一种方法可以解决您的潜在问题,它不涉及创建
NA的矩阵。顺便说一句,我认为你的问题不应该被否决。它相当清楚(虽然有点奇怪)并且足以让其他人重现该问题。 -
我想把list矩阵转成char矩阵,数据是我们公司的,这里放不下,所以我用character(0),你可以用matrix(list(" a","b","c","d"), nrow = 2,ncol = 2) 如果你愿意的话