配列(array class)同士の計算は通常だとエラーが表示されます。配列同士をエラーなく計算できるパッケージの紹介です。
パッケージバージョンは0.1.1。実行コマンドはwindows 11のR version 4.1.3で確認しています。
パッケージのインストール
下記、コマンドを実行してください。
#パッケージのインストール install.packages("dibble")
実行コマンド
詳細はコメント、パッケージのヘルプを確認してください。
#パッケージの読み込み library("dibble") ###データ例の作成##### #配列データ_1 Array_1 <- array(data = 1:8, dim = c(2, 2, 2), dimname = list(X_1 = letters[1:2], Y_1 = letters[1:2])) #Array_1 #, , 1 # Y_1 #X_1 a b # a 1 3 # b 2 4 #, , 2 # # Y_1 #X_1 a b # a 5 7 # b 6 8 #配列データ_2 Array_2 <- array(data = 1:12, dim = c(3, 4), dimname = list(X_2 = letters[1:3], Y_2 = letters[1:4])) #Array_2 # Y_2 #X_2 a b c d # a 1 4 7 10 # b 2 5 8 11 # c 3 6 9 12 #エラーになる Array_1[,,1] + Array_2 Error in Array_1 + Array_2 : non-conformable arrays ######## #配列で計算が可能なdibble classへ変換:as_dibbleコマンド TestDibble_1 <- as_dibble(Array_1[,,1]) TestDibble_2 <- as_dibble(Array_2) ##dibble形式の内容 TestDibble_1 # A dibble: 4 # Dimensions: X_1 [2], Y_1 [2] # X_1 Y_1 . # <chr> <chr> <int> # 1 a a 1 # 2 a b 3 # 3 b a 2 # 4 b b 4 ##計算を実行すると値が返されるが ##BroadcastingのWarning messagesも出力される TestDibble_1 + TestDibble_2 # A dibble: 48 # Dimensions: X_1 [2], Y_1 [2], X_2 [3], Y_2 [4] # X_1 Y_1 X_2 Y_2 . # <chr> <chr> <chr> <chr> <int> # 1 a a a a 2 # 2 a a a b 5 # 3 a a a c 8 # 4 a a a d 11 # 5 a a b a 3 # 6 a a b b 6 # 7 a a b c 9 # 8 a a b d 12 # 9 a a c a 4 #10 a a c b 7 # ... with 38 more rows # Warning messages: # 1: Broadcasting, #$ X_1: chr [1:2] "a" "b" #$ Y_1: chr [1:2] "a" "b" #$ X_2: chr [1:3] "a" "b" "c" #$ Y_2: chr [1:4] "a" "b" "c" "d" # 2: Broadcasting, #$ X_1: chr [1:2] "a" "b" #$ Y_1: chr [1:2] "a" "b" #$ X_2: chr [1:3] "a" "b" "c" #$ Y_2: chr [1:4] "a" "b" "c" "d" #BroadcastingのWarning messagesを抑制:broadcastコマンド #dim_namesの設定が必要です broadcast(TestDibble_1 + TestDibble_2, dim_names = c(names(dimnames(TestDibble_1)), names(dimnames(TestDibble_2)))) # A dibble: 48 # Dimensions: X_1 [2], Y_1 [2], X_2 [3], Y_2 [4] # X_1 Y_1 X_2 Y_2 . # <chr> <chr> <chr> <chr> <int> # 1 a a a a 2 # 2 a a a b 5 # 3 a a a c 8 # 4 a a a d 11 # 5 a a b a 3 # 6 a a b b 6 # 7 a a b c 9 # 8 a a b d 12 # 9 a a c a 4 #10 a a c b 7 # ... with 38 more rows
少しでも、あなたの解析が楽になりますように!!