У меня есть три матрицы (игнорируйте значения, они только для иллюстрации).a
, b
и c
имеют одинаковые переменные (они имеют одинаковые столбцы / переменные и "позиционирование", но измеряют разные вещи)
# my actual mat is 120x80
a = rbind(c(1,1,2,3,1), c(2,2,3,1,2), c(3,3,1,2,1))
a
[,1] [,2] [,3] [,4] [,5]
[1,] 1 1 2 3 1
[2,] 2 2 3 1 2
[3,] 3 3 1 2 1
# my actual mat is 120x80
b = rbind(c(0.8,0.6,0.7,0.8,0.9), c(0.6,0.7,0.8,0.7,0.6), c(0.8,0.9,0.7,0.6,0.9))
b
[,1] [,2] [,3] [,4] [,5]
[1,] 0.8 0.6 0.7 0.8 0.9
[2,] 0.6 0.7 0.8 0.7 0.6
[3,] 0.8 0.9 0.7 0.6 0.9
# my actual mat 120x80
c = rbind(c(0.1,0.1,0.3,0.2,0.1), c(0.3,0.2,0.1,0.2,0.1), c(0.2,0.3,0.1,0.2,0.3))
c
[,1] [,2] [,3] [,4] [,5]
[1,] 0.1 0.1 0.3 0.2 0.1
[2,] 0.3 0.2 0.1 0.2 0.1
[3,] 0.2 0.3 0.1 0.2 0.3
Мы берем строки из b
и строки из c
If 1 in a[1,] then b[1,]-c[1,], else -c[1,]
If 2 in a[1,] then b[1,]-c[1,], else -c[1,] or simply 0-c[1,]
If 3 in a[1,] then b[1,]-c[1,], else -c[1,]
d.row1 (a 3x80 matrix)
rownames(drow1)<-c("1","2","3")
[,1] [,2] [,3] [,4] [,5]
1 0.7 0.5 -0.3 -0.2 0.8
2 -0.1 -0.1 0.4 -0.2 -0.1
3 -0.1 -0.1 -0.3 0.6 -0.1
Обратите внимание, что d.row1[1,1]
, d.row1[1,2]
и d.row1[1,5]
имеют классификацию 1 в a[1,]
, в то время как другие значения в строке 1 имеют значения 2 или3. Следовательно, мы выполнили операцию b[1,]-c[1,]
вместо -c[1,]
.
Выглядит это так:
Аналогично, для строки a[2,]
If 1 in a[2,] then b[2,]-c[2,], else -c[2,]
If 2 in a[2,] then b[2,]-c[2,], else -c[2,] or simply 0-c[2,]
If 3 in a[2,] then b[2,]-c[2,], else -c[2,]
d.row2 (a 3x80 matrix)
[,1] [,2] [,3] [,4] [,5]
1 -0.3 -0.2 -0.1 0.5 -0.1
2 0.3 0.5 -0.1 -0.2 0.5
3 -0.3 -0.2 0.7 -0.2 -0.1
Обратите внимание, что d.row1
и d.row2
происходят из строки 1 и строки 2 из a
, b
и c
соответственно.
Я хочу создать список для каждой строки в a
, b
и c
.Всего 120 кадров данных в списке (потому что у меня 120 строк в других матрицах).
Я думаю, что for
петли или аналогичные могут быть полезны для моей проблемы.
Заранее спасибо!