ショートバージョン:
データフレームの単一行を文字ベクトルに変換しようとしたときのas.characterの動作がわかりません。
_> mydf <- data.frame("myvar1"=c("mystring","2"),"myvar2"=c("mystring","3"))
> mydf # Nice!
myvar1 myvar2
1 mystring mystring
2 2 3
> as.character(mydf[1,])
[1] "2" "2"
> as.character(as.vector(mydf[1,]) )
[1] "2" "2"
_
たぶん誰かが最後の2つの出力行と正しいアプローチについて説明してくれる?どうもありがとう。
背景/目的:
データフレームの行(値の異なるデータ型の列を含む)で値の連続する発生を検出するためにlre()
を使用したいと思います。
問題:lre()
にはベクトルが必要です。ベクトルには明確なデータ型(整数、文字、係数など)が必要です。ここでの私の考えは、データフレーム行を文字ベクトルに変換して、変換によるデータ損失を回避することです。
データフレームの列は、要因となる文字ではありません。
データフレームを作成するときのデフォルトは、文字が要因です。列を選択すると、これをはっきりと見ることができます
R> mydf[,1]
[1] mystring 2
Levels: 2 mystring
この動作を回避するには、stringsAsFactors
引数をFALSE
に設定します
mydf = data.frame("myvar1"=c("mystring", "2"),
"myvar2"=c("mystring", "3"),
stringsAsFactors=FALSE)
この質問もご覧ください: データフレーム列を数値型に変換する方法
これを試して:
mydf <- data.frame("myvar1"=c("mystring","2"),"myvar2"=c("mystring","3"), stringsAsFactors=F)
as.character(mydf[1,])
[1] "mystring" "mystring"
文字列が因子に強制変換され、因子レベルが表示されました。