私は長い間Rを使ってきたので、「こんにちは、私は初心者です、これを私に説明してください」と言うことはできません。しかし、それは私が今この問題にぶつかってきたので、私がそれを解決して何か他のものに取り組むたびに尋ねたいことです。しかし、今日私は十分に尋ねるには不思議です。要素が単一の列でないデータフレーム
私は、データフレームを同じ長さの列のコレクションと考えています。私はそれが間違っていることを認識しています。データフレームに行列、複数列の要素を挿入できるので間違っています。私が間違ってそれをすると、私は画面に真実を印刷しないものに終わります。私は、データフレームを依頼する明確な方法を見つけることができません「頭」は、それが持っているとそれが本当に持って言っているRの間
一見矛盾した列名、および
「がありますあなたはあります可変データフレームごとに1つの列がありますか」、または「人生を困難にするような内部構造の不満を持っていますか?
あなたがこれを行うと、私は何を意味するのか分かります。 Run
example(predict.lm)
これは、予測方法を実行し、ptという出力の行列を生成します。
そして、その後NPK
npk$predict <- predict(npk.aov, type = "terms")
という名前のデータフレームに追加し、その代わりとして自立マトリックス出力を取る、彼らの例の最後のステップを変更、NPKは何ですか?それはまだデータフレームですか?はい
> is.data.frame(npk)
[1] TRUE
うーん、頭が列名をどのように報告するか注意してください。
> head(npk)
block N P K yield predict.block predict.N predict.P
1 1 0 1 1 49.5 -0.8500000 -4.9250000 0.2083333
2 1 1 1 0 62.8 -0.8500000 4.9250000 0.2083333
3 1 0 0 0 46.8 -0.8500000 -4.9250000 -0.2083333
4 1 1 0 1 57.0 -0.8500000 4.9250000 -0.2083333
5 2 1 0 0 59.8 2.5750000 4.9250000 -0.2083333
6 2 1 1 1 58.5 2.5750000 4.9250000 0.2083333
predict.K predict.N:P predict.N:K predict.P:K
1 -0.9583333 0.9416667 1.1750000 0.4250000
2 0.9583333 -2.8250000 1.1750000 -0.1416667
3 0.9583333 0.9416667 1.1750000 -0.1416667
4 -0.9583333 0.9416667 -3.5250000 -0.1416667
5 0.9583333 0.9416667 1.1750000 -0.1416667
6 -0.9583333 -2.8250000 -3.5250000 0.4250000
predict.N:P:K
1 0.0000000
2 0.0000000
3 0.0000000
4 0.0000000
5 0.0000000
6 0.0000000
これは「predict.block」または「predict.P」という名前の列があるかのようにそれが見えますが、そこにありますない:
> colnames(npk)
[1] "block" "N" "P" "K" "yield"
[6] "predict"
機能は "COLNAMES" より適切に "column_or_whatever_else_we_find_here" と命名されることになります。
そして、あなたはそれらの「列は」内部予測にアクセスするには
> npk$predict.P
NULL
をしようと何を取得、あなたが構造を知っているとマトリックスのように聞いている:
> npk$predict[ , "P"]
1 2 3 4 5
0.2083333 0.2083333 -0.2083333 -0.2083333 -0.2083333
6 7 8 9 10
0.2083333 -0.2083333 0.2083333 0.2083333 0.2083333
11 12 13 14 15
-0.2083333 -0.2083333 -0.2083333 0.2083333 -0.2083333
16 17 18 19 20
0.2083333 0.2083333 -0.2083333 -0.2083333 0.2083333
21 22 23 24
-0.2083333 0.2083333 0.2083333 -0.2083333
私はこの例を選びました私と学生がデータフレームに非カラムのものを追加するときに、しばしば誤って起こることを示します。
NPKに参加して、私は人生が行くように、あまりにも
> npk.new <- merge(npk, pt, by = "row.names",
suffixes = c("", ".predict"))
> colnames(npk.new)
[1] "Row.names" "block" "N"
[4] "P" "K" "yield"
[7] "block.predict" "N.predict" "P.predict"
[10] "K.predict" "N:P" "N:K"
[13] "P:K" "N:P:K"
は、しかし、時には我々は戻って私たちはそこで考えている関数から行列を得ることを理解し、出力がマージされる予測するための正しい方法誤って「データフレーム内の行列」のような構造になってしまいます。
大体私は "これも気付きますか?あなたが私を挫折させるようにあなたを苛立たせますか?私はそれが建設的ではないことを知っています。ここでもっと建設的なことを聞いてみましょう。
データフレームが与えられている場合、その中のすべての「列」が特異な列であるかどうかを知る最も直接的なルートは何ですか?私は明白なように試してみた:
> sapply(npk, is.atomic)
block N P K yield predict
TRUE TRUE TRUE TRUE TRUE TRUE
> sapply(npk, is.vector)
block N P K yield predict
FALSE FALSE FALSE FALSE TRUE FALSE
はこれまでのところ、私はそれが
> sapply(npk, is.matrix)
block N P K yield predict
FALSE FALSE FALSE FALSE FALSE TRUE
行列であればそれゆえ、私はそれぞれを尋ねる機能を書くことができ、データフレーム内の要素を求めることができます知っています列 "あなたは行列ですか"あなたは "データフレーム"ですか、あなたは "配列"ですか?しかし、それはあまりにも退屈なようです。
どのようにそれはあなたの通常のカラム名以外のものを備えてかどうかを確認するためにNPK $のオートコンプリートを見てどうですか? RStudioでは、アイコンをスキミングするだけです。 – AlexR
'str'はあなたの友人です、例えば' str(npk) 'です。 – Gregor
また、「頭が列名を報告している」と思うのは、「頭」を記述するのが難しいということです。 'head'とは、最初の6行を返す(そして印刷する)ことです。 'names()'または 'colnames()'は列名を返します。また、 '' predict "'という名前の列があります。 – Gregor