条件、サブ、および遅延の 3 つのグループ化変数を持つデータ セットがあります。これは私のデータの簡略化されたバージョンです(実際のデータはもっと長いです)
sub condition delay later_value choiceRT later_choice primeRT cue 10 SIZE 10 27 1832 1 888 CHILD 10 PAST 5 11 298 0 1635 PANTS 10 SIZE 21 13 456 0 949 CANDY 11 SIZE 120 22 526 1 7963 BOY 11 FUTURE 120 27 561 1 4389 CHILDREN 11 PAST 5 13 561 1 2586 SPRING
これらのデータに適用する一連の複雑な手順があります (詳細は重要ではありません)。3 つのグループ化変数で分割すると、目的を達成する次の関数を作成しました。興味のある 3 つの変数 (indiff、p_intercept、p_lv) を返します。
getIndiffs <- function(currdelay){
if (mean(currdelay$later_choice) == 1) {
indiff = 10.5
p_intercept = "laters"
p_lv = "laters"
}
else if (mean(currdelay$later_choice) == 0) {
indiff = 30.5
# no p-val here, code that this was not calculated
p_intercept = "nows"
p_lv = "nows"
}
else {
F <- factor(currdelay$later_choice)
fit <- glm(F~later_value,data=currdelay,family=binomial())
indiff <- -coef(fit)[1]/coef(fit)[2]
if (indiff < 10) indiff = 10.5
else if (indiff > 30) indiff = 30.5
p_intercept = round(summary(fit)$coef[, "Pr(>|z|)"][1],3)
p_lv = round(summary(fit)$coef[, "Pr(>|z|)"][2], 3)
c(indiff,p_intercept,p_lv)
}
ddply を使用して、3 つのグループ化変数ごとにデータの各サブセットに適用しようとしています。
ddply(data,.(sub,condition,delay),getIndiffs)
ただし、これを実行するとエラーが発生します
list_to_dataframe(res, attr(.data, "split_labels")) のエラー: 結果の長さが等しくありません
奇妙なことに、これはグループ化変数を 1 つしか使用しない場合は正常に機能しますが、2 つ以上の場合はエラーがスローされます。
また、データセットを 3 つのグループ化変数によって分割されたサブセットのみを含むデータ ドラムに分割することを「シミュレート」すると、関数は正常に動作します。(注:3つの変数を返す、または1つの変数だけを返すさまざまな方法を試しましたが、どちらも機能しません)
基本的に知りたいのは、plyrを使用して関数を使用して複数の変数を返す方法です。
根本的に異なる私の問題に対する他の解決策も大歓迎です。