Создать матрицу хи-квадрат с конкретными именами столбцов и строк в R - PullRequest
0 голосов
/ 08 октября 2018

Я очень плохо знаком с программированием на R, и я работаю над заданием, которое просит меня создать матрицу из 25 строк и 8000 столбцов с числами, взятыми из распределения хи-квадрат с 5 степенями свободы.

Кроме того, мне нужно присвоить rownames объекту данных в качестве первых 25 букв алфавита в верхнем регистре, за которыми следуют те же буквы в нижнем регистре (1-я строка будет Aa, 2-я будет Bb).Имена столбцов должны быть названы в соответствии с шаблоном: Variable.<column number>.Таким образом, столбец 4 будет именоваться Variable.4, а столбец 5 будет именоваться Variable.5 и так далее.

Пока у меня есть

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

Я не уверен, что правильно выполнил распределение chi, и я не уверен, как правильно назвать строки и столбцы.Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 09 октября 2018

В 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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...