R 如何建立平方关系矩阵

R 如何建立平方关系矩阵,r,R,我想用基因表达数据做一个平方关系矩阵。我的数据子集如下表所示: gene. Sample1 Sample2 Sample3 Sample4 Sample5 A 13.932431 5.366284 6.93992 6.818242 2.564284 B 21.111017 0.662061 1.563687 2.135377 0.261206 C 26.471751

我想用基因表达数据做一个平方关系矩阵。我的数据子集如下表所示:

gene.   Sample1     Sample2      Sample3     Sample4      Sample5
A      13.932431    5.366284     6.93992     6.818242     2.564284
B      21.111017    0.662061     1.563687    2.135377     0.261206
C      26.471751    0.932416     1.673144    1.606691     0.361993
D      27.597507   36.591138    28.371248   31.376842    30.893555
E      35.324703    0            1.462438    1.175831     0
F.      7.381737    3.083751     4.56243     6.64035      5.346179
G      20.689661   58.773005    29.078037   69.195561    58.661982
H       0           0            0           0            0
I       0           0            0           0            0

我想用这个公式:
X%*%X/ncol(X)
。我想得到一个矩阵,它的行数等于列数,列数应该等于个体数。我总共有500个样本和35000个基因。

你不能用
X
乘以
X
。也许你想要这个

假设从
.csv
文件导入的数据位于名为
data
的data.frame中。您需要删除包含基因符号的字符列,然后才能将矩阵的转置与自身相乘

mat <- as.matrix(data[,!names(data) %in% "gene"])
(t(mat) %*% mat) / nrow(mat)
         Sample1  Sample2  Sample3  Sample4  Sample5
Sample1 425.8389 262.4451 182.6579 285.6350 239.6188
Sample2 262.4451 536.9769 311.2274 586.1026 512.1032
Sample3 182.6579 311.2274 191.8691 331.9591 291.7184
Sample4 285.6350 586.1026 331.9591 652.4043 564.7350
Sample5 239.6188 512.1032 291.7184 564.7350 492.3329

谢谢!是的,这就是我要找的。但我有500个样本,总共有35000个基因。是否有另一种输入数据的方法,可以减少准备“数据”所需的时间。抱歉,没有说清楚。我的意思是我有一个很大的数据集。导入输入csv文件后,如何创建“数据”对象?正如您提到的单个标签一样,示例数据的答案中每个示例的示例值。我认为手动创建这样的dat对象将非常耗时。有没有办法让它自动化?
data <- structure(list(gene = structure(1:9, .Label = c("A", "B", "C", 
"D", "E", "F", "G", "H", "I"), class = "factor"), Sample1 = c(13.932431, 
21.111017, 26.471751, 27.597507, 35.324703, 7.381737, 20.689661, 
0, 0), Sample2 = c(5.366284, 0.662061, 0.932416, 36.591138, 0, 
3.083751, 58.773005, 0, 0), Sample3 = c(6.93992, 1.563687, 1.673144, 
28.371248, 1.462438, 4.56243, 29.078037, 0, 0), Sample4 = c(6.818242, 
2.135377, 1.606691, 31.376842, 1.175831, 6.64035, 69.195561, 
0, 0), Sample5 = c(2.564284, 0.261206, 0.361993, 30.893555, 0, 
5.346179, 58.661982, 0, 0)), class = "data.frame", row.names = c(NA, 
-9L))