私は、元の変数に課せられた条件に基づいて新しい変数を作成したいと思います。新しい変数「newvarが」とき、元の「欠落するように設定されているのは、元の変数、「VAR」新しい変数を作成するときに何が問題になりましたか?
- を言ってみましょう、1からランダムなサンプルで構成ベクトルである... 20、および
- varが 『警告メッセージは、結果を示し、以下のように10未満
コードが
> mydata <- data.frame(var=sample(1:20))
> mydata$newvar <- rep(NA, nrow(mydata))
> mydata$newvar[mydata$var < 10] <- mydata$var
Warning message:
In mydata$newvar[mydata$var < 10] <- mydata$var :
number of items to replace is not a multiple of replacement length
、手順を記述している『と、』VARはVAR」に10より大きい、及び等しいです』ひどいです。例えば、行4及び5において、「newvar」は、それぞれ、行2及び3に、「VAR」の値を割り当てられています。何がうまくいかなかったのか教えていただけますか?
> mydata
var newvar
1 3 3
2 16 NA
3 13 NA
4 5 16
5 7 13
6 19 NA
7 4 5
8 17 NA
9 9 7
10 20 NA
11 14 NA
12 8 19
13 10 NA
14 6 4
15 1 17
16 11 NA
17 18 NA
18 15 NA
19 2 9
20 12 NA
私は比較的新しいRですが、変数やデータの操作方法はまだ学習しています。新しい変数を作成するには、私は私が
mydata$newvar <- rep(NA, nrow(mydata))
loop_through_these <- which(mydata$var < 10)
for(i in loop_through_these){
mydata$newvar[i] <- mydata$var[i]
}
> mydata
var newvar
1 3 3
2 16 NA
3 13 NA
4 5 5
5 7 7
6 19 NA
7 4 4
8 17 NA
9 9 9
10 20 NA
11 14 NA
12 8 8
13 10 NA
14 6 6
15 1 1
16 11 NA
17 18 NA
18 15 NA
19 2 2
20 12 NA
これ以下のように変更する必要がインデックスを通じてだけでループができることを理解し、最も効率的ではないが、私に正しい結果を与えます。それでも、ループを使うよりも効率的な方法があると思います。あなたの助けに感謝します。
それは完全に、感謝を働きました! – TCL