我对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,也不确定如何正确命名行和列。有人可以帮我吗?
答案 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"