【问题标题】:Select columns for heatmap in R在 R 中选择热图的列
【发布时间】:2010-06-02 14:41:30
【问题描述】:

我再次需要你的帮助:)

我编写了一个 R 脚本,它从给定的制表符分隔的 txt 或 xls 文件生成热图。目前,我在 xls 文件中手动删除了我不想在热图中包含的所有列。 现在我想自动化它,但我不知道如何:(

所有 xls 文件中有趣的列都以相同的开头,后跟一个单独的名称:

xls 文件 1:L1_tpm_xxxx L2_tpm_xxxx L3_tpm_xxxx

xls 文件 2:L1_tpm_xxxx L2_tpm_xxxx L3_tpm_xxxx L4_tpm_xxxx L5_tpm_xxxx

任何想法如何选择这些列?

谢谢你的期待,菲利普

【问题讨论】:

标签: r heatmap


【解决方案1】:

您可以使用(如果您已在 data.frame df 中读取数据):

df <- df[,grep("^L[[:digit:]]+_tpm.*",colnames(df))]

或者你可以明确地写出你想要的列:

df <- df[,c("L1_tpm_xxxx","L2_tpm_xxxx","L3_tpm_xxxx")]

等等……

下面的link很有用;-)

【讨论】:

  • 对于名为“L10_tpm_abcd”的列,您的代码不会成功。我建议“^L[0-9]+_tpm”
  • 首先感谢您的帮助!我将 read.table 用于 txt 文件,但将“gdata”包中的 read.xls 用于 excel 文件。还没来得及测试,但这对 read.xls 也有效吗?
  • gd047:感谢您的评论,代码已相应更改。 Philipp:我猜 'read.xls' 正在读取 data.frame 中的数据,所以它应该也能正常工作。
【解决方案2】:

如果您认为列位置将在 Excel 工作表中固定,这里最简单的解决方案是仅使用列索引。例如,如果您使用 read.table 将制表符分隔的文本文件导入为 data.frame,然后决定只保留前两列,则可以执行以下操作:

data <- read.table("path_to_file.txt", header=T, sep="\t")
data <- data[,1:2]

【讨论】:

  • 该死,这本来很容易 ;-) 不幸的是,它们并不总是具有相同的索引 ^^ 但是还是谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-11
  • 1970-01-01
  • 1970-01-01
  • 2014-01-13
  • 2021-12-16
  • 2017-03-27
  • 2011-06-09
相关资源
最近更新 更多