web-dev-qa-db-ja.com

R:データフレーム行を文字ベクトルに変換する

ショートバージョン:

データフレームの単一行を文字ベクトルに変換しようとしたときの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()にはベクトルが必要です。ベクトルには明確なデータ型(整数、文字、係数など)が必要です。ここでの私の考えは、データフレーム行を文字ベクトルに変換して、変換によるデータ損失を回避することです。

13
nilsole

データフレームの列は、要因となる文字ではありません。

データフレームを作成するときのデフォルトは、文字が要因です。列を選択すると、これをはっきりと見ることができます

R> mydf[,1]
[1] mystring 2       
Levels: 2 mystring

この動作を回避するには、stringsAsFactors引数をFALSEに設定します

mydf = data.frame("myvar1"=c("mystring", "2"),
                    "myvar2"=c("mystring", "3"), 
                     stringsAsFactors=FALSE)

この質問もご覧ください: データフレーム列を数値型に変換する方法

9
csgillespie

これを試して:

 mydf <- data.frame("myvar1"=c("mystring","2"),"myvar2"=c("mystring","3"), stringsAsFactors=F)
 as.character(mydf[1,])
 [1] "mystring" "mystring"

文字列が因子に強制変換され、因子レベルが表示されました。

4
coffeinjunky