私がする必要があるのは、 a の前の n 行 (ナイス ラウンド数の場合は 5 など) をテストすることですdata.frame
。これは本当に簡単です。
for (i in 1:nrow(data)){
ifelse(((data$V1[i]>(mean(data$V1)+2*sd(data$V1))) &
(data$V1[i-1]>(mean(data$V1)+2*sd(data$V1)))),Control[i,1]<-1,Control[i,1]<-0)
}
これは機能し、コントロールは、テストが真の場合は 1 で満たされ、偽の場合は 0 で満たされます。
ただし、過去にそれをさらにいくつかに拡張したいと考えています。これは、次のようにネストされた for で実行しようとしています。
for (i in 1:nrow(data$V1)){ifelse((data$V1[i]>(mean(data$V1)+sd(data$V1))) &
(for (j in 1:4){(data$V1[(i-j)]>(mean(data$V1)+sd(data$V1)))},
Control[i,1]<-1,Control[i,1]<-0)}
これにより、次のエラーが発生します(簡単にするために、 と呼ばれる値の単一ベクトルでテストしますtest
)。
Error: unexpected ',' in "for (i in 1:length(test)){ifelse((test[i]>(mean(test)+sd(test))) & (for (j in 1:4){(test[(i-j)]>(mean(test)+sd(test)))},"
いくつかの括弧で埋めようとすると、次のわずかに異なるエラーが発生します。
Error: unexpected ')' in "for (i in 1:length(test)){ifelse((test[i]>(mean(test)+sd(test))) & (for (j in 1:4){(test[(i-j)]>(mean(test)+sd(test))))"
test
は次のように定義されます。
test <- c(4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 8, 8, 7, 7)
私のメソッド、またはより効率的な R メソッド (私はまだこの言語に慣れていません!) に関するヘルプは大歓迎です。