我们有一个矩阵W和2500个矩阵B的列表,每个矩阵B(从1到2500)有不同的列名(chr [1..80])。
对于此列表中的每个元素,我们必须创建相同的矩阵W(我们已经拥有)但具有相应的B列名称。
答案 0 :(得分:0)
我们可以replicate
' W'矩阵到list
的' W'长度为list
的矩阵等于' B'的length
list
矩阵,即' lst'。我们从每个' B'中提取列名称。矩阵在' lst'使用lapply
。然后,将这两个作为参数传递给Map
,并为' W'分配list
的列名。带有相应list
列名称的矩阵。
res <- Map(function(x,y) {
colnames(x) <- y
x}, replicate(length(lst), W, simplify=FALSE),
lapply(B, colnames))
lapply(res, head, 2)
#[[1]]
# A B C D E
#[1,] 1 21 41 61 81
#[2,] 2 22 42 62 82
#[[2]]
# F G H I J
#[1,] 1 21 41 61 81
#[2,] 2 22 42 62 82
以及&#39; B&#39;的列名在&#39; lst&#39;中的矩阵是
lapply(lst, colnames)
#[[1]]
#[1] "A" "B" "C" "D" "E"
#[[2]]
#[1] "F" "G" "H" "I" "J"
注意:这里我使用了一个包含5列的小型数据集,用于&#39; B&#39;和&#39; W&#39;矩阵和list
长度为2.
lst <- list(matrix(1:25, ncol=5, dimnames=list(NULL,
LETTERS[1:5])), matrix(26:50, ncol=5,
dimnames=list(NULL, LETTERS[6:10])))
W <- matrix(1:100, ncol=5)