Присвоение имен столбцов в матрице usinf "for" - PullRequest
0 голосов
/ 09 октября 2018

У меня есть n факторов и я сделал n (n-1) / 2 комбинации этих факторов в виде столбцов в матрице.Теперь я хочу назначить имена столбцов, поскольку каждое имя показывает, какие два фактора объединены.Это то, что я написал.Но ошибка в том, что «длина dinames не равна содержанию массива».Что бы вы предложили?

for (i in 1:ncol(X_ok)) { 
for (j in i:ncol(X_ok)) {
if(i == j){
next
}
   colnames(out_or)<-paste0(colnames(X_ok)[i],colnames(X_ok)[j], sep='*')
  }
}

Ответы [ 2 ]

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

Вот мой подход с использованием перекрёстка () от tidyverse.

X_ok <- letters[1:5]

library(tidyverse)
crossing(X_ok, X_ok) %>% 
  mutate(column_names = paste(X_ok, Y_ok, sep='*')) %>% 
  select(column_names) -> cc
names(out_or) <- cc$column_names

Может быть немного легче читать, если вы не привыкли применять синтаксис ().

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

Вы можете легко сгенерировать все возможные комбинации X_ok без использования цикла for:

X_ok <- LETTERS[1:5] # as an example

combinations <- combn(X_ok, 2)

Затем вы можете объединить вывод по столбцу, чтобы получить новые имена, разделенные *:

colnames(out_or) <- apply(combinations, 2, paste, collapse = "*")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...