Я думаю, это происходит потому, что имя вашего класса является тем же именем другого класса в JDK. Помогите затмению определить, какой из них вы пытаетесь запустить, выбрав пакет, в котором находится ваш класс. Переход к конфигурации запуска выбирает проект и основной класс.
Когда вы нажимаете кнопку поиска, чтобы выбрать основной класс, вы найдете варианты с таким же именем, но с другим пакетом, выберите свой класс.
Это должно сделать работу.
Во-первых, создайте диагональную матрицу m2
, где каждый элемент диагонали представляет собой разницу между 1 и суммой матрицы m1
m1 <- matrix(0.1, nrow = 3, ncol = 3, dimnames = list(c('a','b','c'), c('c1','c2','c3')))
m2 <- diag(1 - colSums(m1))
m2
#> [,1] [,2] [,3]
#> [1,] 0.7 0.0 0.0
#> [2,] 0.0 0.7 0.0
#> [3,] 0.0 0.0 0.7
Затем нам нужно добавить имена строк до m2
. Возможно, мы захотим выделить первые 3 буквы алфавита , а не , используемых для m1
. Преимущество этого состоит в том, что вам не нужно указывать имена строк новой матрицы - они будут распределяться на основе того, что еще не использовалось.
rownames(m2) <- letters[!letters %in% rownames(m1)][1:nrow(m2)]
rbind(m1, m2)
#> c1 c2 c3
#> a 0.1 0.1 0.1
#> b 0.1 0.1 0.1
#> c 0.1 0.1 0.1
#> d 0.7 0.0 0.0
#> e 0.0 0.7 0.0
#> f 0.0 0.0 0.7
Как видите, этот код по-прежнему работает с большим количеством строк / столбцов и различными числами в m1
:
m1 <- matrix(0.11, nrow = 3, ncol = 4, dimnames = list(c('a','b','c'), c('c1','c2','c3','c4')))
m1
#> c1 c2 c3 c4
#> a 0.11 0.11 0.11 0.11
#> b 0.11 0.11 0.11 0.11
#> c 0.11 0.11 0.11 0.11
m2 <- diag(1 - colSums(m1))
m2
#> [,1] [,2] [,3] [,4]
#> [1,] 0.67 0.00 0.00 0.00
#> [2,] 0.00 0.67 0.00 0.00
#> [3,] 0.00 0.00 0.67 0.00
#> [4,] 0.00 0.00 0.00 0.67
rownames(m2) <- letters[!letters %in% rownames(m1)][1:nrow(m2)]
rbind(m1, m2)
#> c1 c2 c3 c4
#> a 0.11 0.11 0.11 0.11
#> b 0.11 0.11 0.11 0.11
#> c 0.11 0.11 0.11 0.11
#> d 0.67 0.00 0.00 0.00
#> e 0.00 0.67 0.00 0.00
#> f 0.00 0.00 0.67 0.00
#> g 0.00 0.00 0.00 0.67
Создано в 2019-02-20 с помощью [ 118] представьте пакет (v0.2.1) sup>
Мы можем создать набор matrix
с NA
элементами и заполнить диагональ в процентах. Как отметил @Jilber Urbina, мы можем объявить row.names
в matrix
:
hypo_companies <- c("d", "e", "f")
percentage <- 0.7
hypo_len <- length(hypo_companies)
hypo_mat <- matrix(NA, hypo_len, hypo_len, dimnames = list(hypo_companies))
diag(hypo_mat) <- rep(percentage, hypo_len)
rbind(m1, hypo_mat)
Вывод:
c1 c2 c3
a 0.1 0.1 0.1
b 0.1 0.1 0.1
c 0.1 0.1 0.1
d 0.7 NA NA
e NA 0.7 NA
f NA NA 0.7
m2 = rbind(m1, do.call(rbind, lapply(1:NCOL(m1), function(i) replace(rep(NA, NCOL(m1)), i, 0.7))))
row.names(m2) = c(row.names(m1), c("d", "e", "f"))
m2
# c1 c2 c3
#a 0.1 0.1 0.1
#b 0.1 0.1 0.1
#c 0.1 0.1 0.1
#d 0.7 NA NA
#e NA 0.7 NA
#f NA NA 0.7