これは、R: '=' および '<-' の代入演算子に関連しています。ただし、私の質問には答えがありません。
リンクされた質問と回答(編集者注:リンクされた回答には実際には記載されていません。記載されている場合、それは間違っているでしょう。引数リストの評価に関するステートメントを作成し、それをグローバル環境からのそのような関数の呼び出しに制限した場合、正しい。)<-
は、関数内で使用するとユーザーワークスペースで変数の割り当てが宣言されるため、関数が呼び出された後に変数を使用できることを説明しています。
これは、次の動作の違いを説明しているようです。この次のコードは、data frame
期待どおりの を生成します。
A <- data.frame(
Sub = rep(c(1:3),each=3),
Word = rep(c('Hap','Lap','Sap'),3),
Vowel_Length = sample(c(1:100),9)
)
結果は次のとおりです。
Sub Word Vowel_Length
1 1 Hap 31
2 1 Lap 2
3 1 Sap 71
4 2 Hap 58
5 2 Lap 28
6 2 Sap 20
7 3 Hap 78
8 3 Lap 72
9 3 Sap 77
ただし、次のように関数<-
内で使用するdata.frame()
と、異なる結果が得られます。
B <- data.frame(
Sub <- rep(c(1:3),each=3),
Word <- rep(c('Hap','Lap','Sap'),3),
Vowel_Length <- sample(c(1:100),9)
)
この結果は次のとおりです。
Sub....rep.c.1.3...each...3. Word....rep.c..Hap....Lap....Sap....3.
1 1 Hap
2 1 Lap
3 1 Sap
4 2 Hap
5 2 Lap
6 2 Sap
7 3 Hap
8 3 Lap
9 3 Sap
Vowel_Length....sample.c.1.100...9.
1 31
2 15
3 4
4 2
5 89
6 55
7 12
8 72
9 47
関数内で使用すると変数がグローバルに宣言されるため、リンクされた質問と回答が示すように[コメントを参照してください。]<-
、のヘッダーはそのグローバル宣言から継承されると思います。data frame
ただし、たとえば、 の代わりに、またはの代わりSub....rep.c.1.3...each...3.
に の最初の列のヘッダーとして取得する理由に興味があります。data frame
Sub <- rep(c(1:3),each=3),
1 1 1 2 2 2 3 3 3
アップデート:
@AnandaMahto が削除されたコメントで指摘したように、に設定check.names
するとFALSE
、次の動作が生成されます。
C <- data.frame(
Sub <- rep(c(1:3),each=3),
Word <- rep(c('Hap','Lap','Sap'),3),
Vowel_Length <- sample(c(1:100),9),
check.names=FALSE
)
結果は次のとおりです。
Sub <- rep(c(1:3), each = 3) Word <- rep(c("Hap", "Lap", "Sap"), 3)
1 1 Hap
2 1 Lap
3 1 Sap
4 2 Hap
5 2 Lap
6 2 Sap
7 3 Hap
8 3 Lap
9 3 Sap
Vowel_Length <- sample(c(1:100), 9)
1 15
2 3
3 82
4 33
5 99
6 53
7 89
8 77
9 47
明確にするために、私の質問は、なぜこの動作が起こっているのかということです。特に、またはの代わりにヘッダーとして取得するのはなぜですか。Sub....rep.c.1.3...each...3.
Sub <- rep(c(1:3),each=3),
1 1 1 2 2 2 3 3 3
check.names=TRUE
そして今、なぜあなたがSub <- rep(c(1:3),each=3),
ヘッダーとしてcheck.names=FALSE
?を取得するのかにも興味があると思います.