6列のdata.frameがあります。1 つ目は被験者用、2 つ目は実験のブロック用です。列 3、4、および 5 はバイナリ スコア (0 または 1) を計算するために必要な値で、6 列目に追加します (そのため、今、 0でいっぱいです)。
head(kfdblock3to9)
subject time gr ugr sdugr IL
40002.3 40002 3 0.4475618 0.3706000 0.02994533 0
40002.4 40002 4 0.4361786 0.3901111 0.01846110 0
40002.5 40002 5 0.4279880 0.4550000 0.02811839 0
40002.6 40002 6 0.4313647 0.4134444 0.04352974 0
40002.7 40002 7 0.4420889 0.4394286 0.02883143 0
40002.8 40002 8 0.4325227 0.3960000 0.06559222 0
forループでこれをやろうとしていますが、Rの初心者で、これに問題があります。私が実装しようとしているスコアリング式は次のとおりです。列 3 ($gr) の値が列 4 ($ugr) の値と列 5 ($sdugr) の値の .35 倍の差よりも小さい場合) の場合、サブジェクトは 1 を受け取り、それ以外の場合は 0 を受け取ります。
私がこれまでに試したことは次のとおりです。
for (i in kfdblock3to9$subject) {
if (kfdblock3to9$gr<(kfdblock3to9$ugr-(.35*kfdblock3to9$sdugr)))
kfdblock3to9$IL=1
else kfdblock3to9$IL=0
}
これにより、50 個の警告が表示され、すべて「条件の長さが 1 を超えており、最初の要素のみが使用されます」と書かれています。
その場合、インデックスに何か問題があると思いますが、それを理解できませんでした。どんな助けでも大歓迎です。