у меня есть массив A
A
,,A
[,1] [,2] [,3]
[1,] 3 7 8
[2,] 4 11 9
[3,] 2 12 4.3
,,B
[,1] [,2] [,3]
[1,] 31 7 8
[2,] 4.2 4 9.5
[3,] 1 1 7
,,C
[,1] [,2] [,3]
[1,] 4 71 8.3
[2,] 4 41 9
[3,] 11 0 73
,,D
[,1] [,2] [,3]
[1,] 7 7 8.3
[2,] 3 4.1 9
[3,] 1 0.5 73
dim(A)
3 3 4
dimnames(A)[3]
A B C D
и у меня есть data.frame
df
df
X Y Z
2 1 A
3 2 D
Я хотел бы поместить в новый столбец df значения массива A, основанные на df
значениях индекса X (строка для массива), Y (столбец для массива) и третьего измерения Z, давайте скажем, мой побочный результат:
df
X Y Z Res
2 1 A 4 # Res is the value of array A in A[2,1,"A"]
3 2 D 0.5 # Res is the value of array A in A[3,2,"D"]
Я попробовал этот код:
df$Res <- NA
if (df$Z == dimnames(A)[3]){
for (i in 1:nrow(df)){
df[i,4] <- A[df[i,1],df[i,2],df[i,3]]
}
}
Но это не очень хорошо работает ...
Любая идея связать dimnames массива третьего измерения и индекс-значение фрейма данных?
P.S. Это простой пример. Мой истинный массив:
dim(A)
137 93 227
и
dim(df)
6080 3
P.S.2 Я предпочитаю не использовать merge
или подобный код другого типа для проблемы выделения