Итак, у меня есть 2 dataframes
. представить их следующим образом:Обратная диагональ на матрице
data1 <- data.frame(c(1.2, 1.4, 1.3),
c(1.12,1.1, 1.9),
c(1.8, 1.1, 1.32))
data2 <- data.frame(c(0.4, 0.2, 0.3),
c(0.1, 0.1, 0.4),
c(0.5, 0.7, 0.4))
как я могу создать совместную матрицу, которая будет выглядеть следующим образом:
combined.data
> 1.2 1.12 1.80
1.4 1.10 0.7
1.3 0.4 0.4
левая верхняя матрица data1
, правый нижний является data2
. Я
До сих пор мой код это, и я получаю то, что хочу, но до стороной вниз:
new <- -data1
#new <- new[, rev(colnames(data1))]
# diag(new) <- NA
corel <- data2
#corel <- corel[, rev(colnames(data2))]
new[upper.tri(new)] <- corel[upper.tri(corel)]
И мне нужны строки и порядок столбцов неповрежденными
Любые мысли ?
После использования дела Хабориме я как-то получил результаты. И я создал тепловую карту, чтобы показать ее. Проблема в том, что в некоторых пространствах данные перекрывают 2 матрицы.
выше диагонали она должна быть полностью красным, а ниже диагонали, синий.
Я принял ответ Хабориме. и проблема в том, что мои данные были 32 * 31. если ваша матрица не квадрат, это будет беспорядок! Я только что добавил 1 фиктивный столбец к моему набору данных, и он работал как шарм!
Ваши линии дают предупреждения и то, что они производят очень вряд ли будет то, что вы имели в виду. Пожалуйста, потратьте немного времени, чтобы убедиться, что у нас есть воспроизводимый пример. – nicola
Я не уверен на 100%, что вы пытаетесь сделать, но прежде всего измените 'as.data.frame' на' data.frame'. Я чувствую, что проблема может заключаться в том, что вы считаете, что каждый вектор чисел, который вы читаете в кадре данных, является строкой, тогда как на самом деле это столбец, то есть 'c (1.2, 1.4, 1.3)' создает первую COLUMN ' data1'. –
Возможно, они хотят 'rbind' вместо' as.data.frame' ... – nicola