r-如何组织我的数据,使用相关性或聚类分析创建热图(x必须是数字问题)



我需要一些帮助来生成具有聚类分析和相关性的热图(我是R的新手(。我的数据在Excel:中如下所示

Gene1   Gene2   Gene3   Gene4   Gene5  ...  Gene296
Bacteria1     0       0       0      0.7     0.2   ...     0
Bacteria2    0.44     0       0       0       0    ...    0.9 
Bacteria2     0      0.32     0      0.4      0    ...     0
...        ...     ...     ...     ...     ...   ...    ...
Bacteria117   0      0.2     0.3      0      0.7   ...     0

0.32的值表示从0到100的32分。存在较高的分数(例如0.9(或较低的分数(比如0或0.2(。我查了一下NA,没有。我想根据我的实验数据(分数(进行聚类分析,找出哪些细菌形成了聚类。该文件为CSV。我用了这个代码:

> aa <- read.csv(file.choose())
> str(aa)
#I obtain this structure
'data.frame':   117 obs. of  296 variables:
$ X                        : Factor w/ 117 levels "Ac_neuii_BVI",..: 45 64 67 104 1 2 3 4 5 6 ...
$ AAC6_Iad                 : num  0 0 0 0 0 0 0 0 0 0 ...
$ aad6                     : num  0 0 0 0 0 0 0 0 0 0 ...
$ abeS                     : num  0 0 0 0 0 0 0 0 0 0 ...
> is.numeric(aa)
[1] FALSE

当我尝试使用相关性或聚类时,我会得到以下错误:

> az <- cor(aa)
Error in cor(aa) : 'x' must be numeric

我尝试了as.matrix,但错误仍然存在于矩阵中。我试过用数字,但没用。我删除了X> aa$X <- NULL,问题消失了(我不知道这是否是解决问题的正确方法(,但细菌的名称消失了,然后我得到了我的基因之间的相关性,而不是我的基因和细菌之间的相关性。同样的事情也发生在使用hclust或dist的集群中。有没有一种方法可以组织我的csv文件?我在互联网上还没有找到一篇关于如何解决"x必须是数字问题"以及如何进行相关性或测量基因与细菌之间距离的明确文章。

谢谢。很抱歉你对某些事情一无所知,这些事情对你来说可能是显而易见的。

您可以将细菌名称导入为row.names:

aa <- read.csv(file.choose(), row.names = 1)

aa$X不是数字(它包含因子(。您可以使用进行转换

aa$X = as.numeric(aa$X)

然后az <- cor(aa)将运行。。。但是(正如@Cole所指出的(这是没有意义的,因为X指的是细菌的名称。

您可以使用read.csv:的row.names参数将第一列设置为行的名称

aa <- read.csv(file.choose(), row.names = 1)

相关内容

  • 没有找到相关文章

最新更新