将列表中的字符串转换为数字矩阵

时间:2016-03-07 06:56:06

标签: r list matrix

我有以下列表,我似乎无法将其转换为数字矩阵。

> MyList
[[1]]
[1] "X4" "X3" "X2" "X5"

[[2]]
[1] "X5" "X2" "X4" "X3"

[[3]]
[1] "X4" "X3" "X2" "X5"

我试过了as.matrix(MyList),但这仍然给了我一个带字符串的矩阵。我想要完成的是一个带有数值的矩阵,因此“X4”变为4,“X3”变为3,等等。有什么建议? 显然在这段代码中我可以很容易地改变它,用我的实际代码我无法改变输出。

1 个答案:

答案 0 :(得分:2)

我们可以遍历list,使用sub删除非数字字符,然后使用numeric转换为as.numeric

lst <- lapply(MyList, function(x) as.numeric(sub("\\D+", '', x)))
lst
#[[1]]
#[1] 4 3 2 5

#[[2]]
#[1] 5 2 4 3

#[[3]]
#[1] 4 3 2 5

如果我们需要matrix

do.call(rbind, lst)

或者@Jaap在评论中提到,使用sapply代替lapply并转置输出

t(sapply(MyList, function(x) as.numeric(sub("\\D+", '', x))))