ベクトルの値を2で割った値で置き換える関数を記述しようとします。同じ値を2で割った値のdfの負の値の置換
# replacement function for a vector
rep <- function(x)
x.half <- {abs(replace(x, which(x<0),x/2))}
しかし、私は負と正の数とベクトルをシミュレートする場合、私は間違った結果を得るので、私は、この機能が正常に動作しないことを知っている:また
a <- c(1,-1,2,-2,3,-3,4,-4,5,-5,11,-11,12,-12,13,-13,21,-21,25,-25)
a.rep <- rep(a)
# data frame to test
test <- cbind(a,a.rep)
を、私はこの機能を適用すると、ベクトルaは、私はこのような警告メッセージが表示されます:
は警告メッセージ: では(X/2、X、(X < 0))を置き換える:商品の 数を置き換えることです交換長の倍数ではない
明らかに、私の機能には何か問題があります。
私の機能の短いバージョン、それは良いです。しかし、私は負の値を半分にするだけで、すべての正の値を変更してはいけません。 – marianess
'a [which(a <1)] = a [which(a <1)]/2'これは機能しますが、このための関数を書く必要はありません。 –
ちょうどそれが最高と最短の答えであることに気づいた:D Thank you @ChirayuChamoli – marianess