1. ホーム
  2. r

[解決済み】apply()とadply()の出力が異なる件)

2022-01-30 23:38:14

質問

なぜかわからないのですが adply() を返します。 data.frame は元の変数を含んでいるのに対し apply() がない。基本的には以下のような感じです。 adply()

mutate()

library(pacman)
p_load(plyr)

g_loadings = c(.50, .60, .80,
               .60, .70, .60,
               .80, .50, .30)

group_1_loadings = c(.50, .50, .50,
                     0, 0, 0,
                     0, 0, 0)

group_2_loadings = c(0, 0, 0,
                     .50, .50, .50,
                     0, 0, 0)

group_3_loadings = c(0, 0, 0,
                     0, 0, 0,
                     .50, .50, .50)

d = data.frame(g_loadings,
               group_1_loadings,
               group_2_loadings,
               group_3_loadings)

adply():

{{コード

リターン

adply(d, 1, function(x) {
  var_g_group = sum(x^2)
  var_remain = 1 - var_g_group
  loading_specificity = sqrt(var_remain)
  return(loading_specificity)
  }
)

{{コード :

{{コード

リターン

  g_loadings group_1_loadings group_2_loadings group_3_loadings        V1
1        0.5              0.5              0.0              0.0 0.7071068
2        0.6              0.5              0.0              0.0 0.6244998
3        0.8              0.5              0.0              0.0 0.3316625
4        0.6              0.0              0.5              0.0 0.6244998
5        0.7              0.0              0.5              0.0 0.5099020
6        0.6              0.0              0.5              0.0 0.6244998
7        0.8              0.0              0.0              0.5 0.3316625
8        0.5              0.0              0.0              0.5 0.7071068
9        0.3              0.0              0.0              0.5 0.8124038

なぜ {コード と同じものを返します。 apply()?

解答方法

これらの命名規則 apply(d, 1, function(x) { var_g_group = sum(x^2) var_remain = 1 - var_g_group loading_specificity = sqrt(var_remain) return(loading_specificity) } ) は配列を操作して {コード . を使用することができます。 [1] 0.7071068 0.6244998 0.3316625 0.6244998 0.5099020 0.6244998 0.3316625 0.7071068 0.8124038

adply()

apply()

plyr