在R中使用特定的col和行名称创建卡方矩阵

时间:2018-10-08 19:42:58

标签: r

我对R编程非常陌生,我正在做一个作业,要求我创建一个具有25行和8000列的矩阵,其数字取自具有5个自由度的卡方分布。

此外,我需要将rownames分配给数据对象,以大写字母开头的25个字母,然后以小写字母开头的相同字母(第一行为Aa,第二行为Bb)。列名称需要根据以下格式命名:Variable.<column number>。因此,第4列将命名为Variable.4,第5列将命名为Variable.5,依此类推。

到目前为止,我有

ans<-matrix(rchisq(8000,5),25, dimnames=list(letters[1:25]))

我不确定我是否正确分配了chi-distribution,也不确定如何正确命名行和列。有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

在R中,您可以在控制台中键入?function,以查看该功能的文档。

如果我们查看?rchisq,就会发现rchisq(n, df)从具有n自由度的卡方分布中生成df个随机数。如果要用随机数填充25 x 8000矩阵,则需要25 * 8000 = 200000个数字。因此,请使用:rchisq(20000, 5)

然后,将它们放入matrix中。我们可以指定行数或列数,并将这些数字适当地放入。因此,请使用:

m <- matrix(rchisq(20000, 5), nrow = 25)
m <- matrix(rchisq(20000, 5), ncol = 8000)

要设置行名,您可以将它们作为向量列表传递到dimnames中的matrix参数(如您所做的那样),在这种情况下,第一个(或唯一)向量将设置行名。行名,第二个将设置列名。或者,您可以使用rownames()功能手动设置它们。

m <- matrix(rchisq(20000, 5), nrow = 25)
rownames(m) <- letters[1:25]

m <- matrix(rchisq(20000, 5), nrow = 25, dimnames=list(letters[1:25]))

要将字母连接在一起,请使用paste0函数,它将传递给它的字符向量的每个对应元素粘贴在一起:

paste0(LETTERS, letters)
 [1] "Aa" "Bb" "Cc" "Dd" "Ee" "Ff" "Gg" "Hh" "Ii" "Jj" "Kk" "Ll" "Mm" "Nn" "Oo" "Pp" "Qq" "Rr" "Ss" "Tt" "Uu" "Vv" "Ww" "Xx" "Yy" "Zz"