我有一个矩阵“ m”,其中有两列和664行;每个m [x,y]的取值范围是1到889。
例如
nrow ncol
1 3
1 250
1 341
2 212
2 452
....
另一方面,我列出了889个字符串,其中包含从数据库中提取的因子;
例如
List
[1] TORNADOS
[2] EXTREME WEATHER
[3] TORNADO
[4] VOLCANO ERUPTION
....
我想根据索引将第一个矩阵中的数字替换为列表中的字符值。
例如
nrow ncol ----> nrow ncol
1 3 TORNADOS TORNADO
谢谢!
答案 0 :(得分:1)
如果您的矩阵称为mat
,而字符串列表称为x
,则可以这样做
mat[] <- x[c(mat)]
考虑一个可重复的示例,
x <- c("TORNADOS", "EXTREME WEATHER", "TORNADO", "VOLCANO ERUPTION")
mat <- matrix(c(1, 1, 1, 2, 2, 3, 4, 4, 1, 2), nrow = 5)
mat
# [,1] [,2]
#[1,] 1 3
#[2,] 1 4
#[3,] 1 4
#[4,] 2 1
#[5,] 2 2
mat[] <- x[c(mat)]
mat
# [,1] [,2]
#[1,] "TORNADOS" "TORNADO"
#[2,] "TORNADOS" "VOLCANO ERUPTION"
#[3,] "TORNADOS" "VOLCANO ERUPTION"
#[4,] "EXTREME WEATHER" "TORNADOS"
#[5,] "EXTREME WEATHER" "EXTREME WEATHER"
答案 1 :(得分:1)
我们可以使用
cbind(nrow = m[List[,1], ncol = m[List[,2]])
答案 2 :(得分:0)
我认为@akrun 编写的代码可能会出错。我没有评论的声誉,所以我在这里发布我的修订。这是我的解决方案版本:
cbind(nrow = List[m[,1]], ncol = List[m[,2]])