:あなたは要因を使用したい場合、あなたはこのようにそれを変換することができ、
df=data.frame(first = 'A', second = 'B', third = 'C', stringsAsFactors=FALSE)
rbind(df,c('Horse','Dog','Cat'))
first second third
1 A B C
2 Horse Dog Cat
sapply(df2,class)
first second third
"character" "character" "character"
その後@ baha-kevは文字列や要素に関して良い答えを持っています。
私はちょうどdata.frameのためrbind
の奇妙な行動を指摘したい:
# This is "should work", but it doesn't:
# Create an empty data.frame with the correct names and types
df <- data.frame(A=numeric(), B=character(), C=character(), stringsAsFactors=FALSE)
rbind(df, list(42, 'foo', 'bar')) # Messes up names!
rbind(df, list(A=42, B='foo', C='bar')) # OK...
# If you have at least one row, names are kept...
df <- data.frame(A=0, B="", C="", stringsAsFactors=FALSE)
rbind(df, list(42, 'foo', 'bar')) # Names work now...
しかし、あなたは文字列だけが、なぜ代わりに行列を使用していない場合?その後、空の行列から始めるとうまくいきます。
# Create a 0x3 matrix:
m <- matrix('', 0, 3, dimnames=list(NULL, LETTERS[1:3]))
# Now add a row:
m <- rbind(m, c('foo','bar','baz')) # This works fine!
m
# Then optionally turn it into a data.frame at the end...
as.data.frame(m, stringsAsFactors=FALSE)
なぜ次のrbindを実行する前に列の名前を変更できませんか? –
これは、これらの文字列が要素に暗黙的に変換されることと関連しています。下記の@ baha-kevの答えを参照してください。 – laslowh
下記の質問に回答してください。 'options(stringsAsFactors = FALSE)'は変換を要素に固定します。そして、いいえ、この「rbind」を実行している間に要因を使用する必要はありません。 'stringsAsFactors'オプションが設定されると、現在の' rbind'ステップはうまく動作します。しかし、おそらく 'data.frame'を構築する別の方法のためのケースを作ることができます。 – Justin