使用矩阵中的行替换列表数组中的行

时间:2014-04-06 03:02:09

标签: r

我目前有一个列表数组和一个用这段代码生成的矩阵:

require(gtools)

FiveStates = array(list(NULL), c(32,2))

four.1 = combinations(5,4,c(LETTERS[1:5]))

four.2 = four.1[nrow(four.1):1,]

我希望将数组FiveStates中第一列的第2-6行替换为矩阵中的所有五行.2。elementwise。如何在不必分别更换每一行的情况下执行此操作?

编辑:我想让FiveStates [2,1]显示" B"," C"," D",&#34 ; E&#34 ;; FiveStates [3,1]显示" A"," C"," D"," E&#34 ;;依此类推,以便FiveStates第一列中的第2到第6个条目具有与4行[2:6,]匹配的向量。

(另外,你需要使用combination()函数的包现在在代码中。很抱歉。)

1 个答案:

答案 0 :(得分:0)

您可以使用常规矩阵索引替换使用列表填充的矩阵块:

FiveStates[2:6, 1] <- lapply(1:nrow(four.1), function(x) four.2[x, ] )
FiveStates[2:6, 1] 

[[1]]
[1] "B" "C" "D" "E"

[[2]]
[1] "A" "C" "D" "E"

[[3]]
[1] "A" "B" "D" "E"

[[4]]
[1] "A" "B" "C" "E"

[[5]]
[1] "A" "B" "C" "D"