いいえ、これはおかしくありません。名前付きオブジェクトと名前なしオブジェクトを使用して data.frame のコンストラクターを呼び出します。
当初、data.frame はリストであると想定し、help(list) を使用して data.frame の動作を説明しました。哲学でさえ同じです(名前付きおよび名前なしの引数)それは間違いであり、答えはdata.frameの助けにあります
?data.frame から、引数の名前について説明するこの部分を取り上げます。
引数がすべて名前付きの単純なオブジェクト (リストではなく、データ フレームの行列) である場合、引数名は列名を示します。名前のない単純な引数の場合、引数の逆解析バージョンが名前として使用されます (囲んでいる I(...) が削除されます)。
そう
x<-data.frame(name<-c("n1","n2"),age<-c(5,6))
これは次と同等です:
x <- data.frame(c("n1","n2"),c(5,6)) ## unnamed objects The functions return dotted pair list
name<-c("n1","n2")
age<-c(5,6)
次に y
y<-data.frame(name=c("n1","n2"),age=c(5,6)) ## named objects functions return a list
ただし、これは単純なオブジェクト引数の命名手順のみを説明していることに注意してください。命名は、いくつかのドットを追加するよりも複雑です。たとえば、これら2つのステートメントが同等であることは非常に驚くべきことです(check.names = TまたはFを使用):
a <- data.frame(y <- list(x=1))
a <- data.frame(y = list(x=1))