遍历矩阵
Looping over matrices
谢谢你的帮助!
我有 2 个矩阵:Mx1 和 Mx2
我想通过在 R 环境中循环选择矩阵来使用 pheatmap 制作热图
我试过了:
Matrices_list <- c(Mx1, Mx2)
for( i in Matrices_list_list ){pheatmap(i, filename= "i.pdf")}
但显然行不通
问题是 Df_list 现在是两个 Mx 的合并,而不是我无法在其中循环的 2 个不同的数据集。它在组合 Df_list
的每个元素中循环
期望的输出:
pheatmap(Mx1, filename="Mx1.pdf")
pheatmap(Mx2, filename="Mx2.pdf")
再次感谢您的帮助:)
A matrix
是具有 dim
ension 属性(通常是 2D)的 vector
。在两个矩阵上使用 c
函数,删除维度属性和 return 单个一维向量,其中 length
等于 length(Mx1)
+ length(Mx2)
.
如评论中所示,如果我们需要将 matrix
本身保存在 list
中,将 names
属性作为各个矩阵的对象名称。使用 dplyr::lst
,默认情况下它生成 list
的 names
作为对象名称
library(dplyr)
Matrices_list <- lst(Mx1, Mx2)
关于 OP post
中使用的 for
循环
for(i in Matrices_list ){...
i
是单个矩阵元素,没有任何名称属性。这可以另外描述为 for
每个循环,即对于 'Matrices_list' 的每个元素 'x'。在其他语言中,例如 C++
,每个语法的语法为
for(auto i : Matrices_list) {...
不是遍历对象元素,而是遍历序列
for(i in seq_along(Matrices_list)) {...
或names
属性,提取那些元素和相应的名称来构造文件名。
对于 tidyverse,我们可以使用 imap
或 iwalk
以及 .x
矩阵元素和 .y
list
的名称或索引 (如果名字不存在)
library(purrr)
library(stringr)
imap(Matrices_list, ~ pheatmap(.x, filename = str_c(.y, ".pdf")))
iwalk(Matrices_list, ~ pheatmap(.x, filename = str_c(.y, ".pdf")))
imap/iwalk
的区别在于 iwalk
不会在控制台上打印 return 值。
谢谢你的帮助!
我有 2 个矩阵:Mx1 和 Mx2 我想通过在 R 环境中循环选择矩阵来使用 pheatmap 制作热图
我试过了:
Matrices_list <- c(Mx1, Mx2)
for( i in Matrices_list_list ){pheatmap(i, filename= "i.pdf")}
但显然行不通 问题是 Df_list 现在是两个 Mx 的合并,而不是我无法在其中循环的 2 个不同的数据集。它在组合 Df_list
的每个元素中循环期望的输出:
pheatmap(Mx1, filename="Mx1.pdf")
pheatmap(Mx2, filename="Mx2.pdf")
再次感谢您的帮助:)
A matrix
是具有 dim
ension 属性(通常是 2D)的 vector
。在两个矩阵上使用 c
函数,删除维度属性和 return 单个一维向量,其中 length
等于 length(Mx1)
+ length(Mx2)
.
如评论中所示,如果我们需要将 matrix
本身保存在 list
中,将 names
属性作为各个矩阵的对象名称。使用 dplyr::lst
,默认情况下它生成 list
的 names
作为对象名称
library(dplyr)
Matrices_list <- lst(Mx1, Mx2)
关于 OP post
中使用的for
循环
for(i in Matrices_list ){...
i
是单个矩阵元素,没有任何名称属性。这可以另外描述为 for
每个循环,即对于 'Matrices_list' 的每个元素 'x'。在其他语言中,例如 C++
,每个语法的语法为
for(auto i : Matrices_list) {...
不是遍历对象元素,而是遍历序列
for(i in seq_along(Matrices_list)) {...
或names
属性,提取那些元素和相应的名称来构造文件名。
对于 tidyverse,我们可以使用 imap
或 iwalk
以及 .x
矩阵元素和 .y
list
的名称或索引 (如果名字不存在)
library(purrr)
library(stringr)
imap(Matrices_list, ~ pheatmap(.x, filename = str_c(.y, ".pdf")))
iwalk(Matrices_list, ~ pheatmap(.x, filename = str_c(.y, ".pdf")))
imap/iwalk
的区别在于 iwalk
不会在控制台上打印 return 值。