1

ヘルプファイルに書かれていることとは反対のようです:

「リスト、データ フレーム、またはマトリックスが data.frame に渡されると、各コンポーネントまたは列が個別の引数として渡されたかのようになります」

それで、私は何を間違っていますか?

コード例:

d <- c("bla", "bla", "blou", "blou", "bli")
dtest <- data.frame(d, stringsAsFactors=FALSE)
dtest2 <- data.frame(dtest, stringsAsFactors=TRUE)
dtest3 <- data.frame(dtest[[1]], stringsAsFactors=TRUE)

str(c(dtest2, dtest3))

1 つは文字ベクトルで、もう 1 つは因子に変換されています (stringAsFactor=TRUE の動作に従います)。それらは両方の要因である必要があります。

実際に data.frame(df) を使用して、いくつかの文字列を持つ既存のデータ フレームを、対応する要素を持つデータ フレームに変換したいと考えています。

4

1 に答える 1

2

これを行うdtest <- data.frame(d, stringsAsFactors=FALSE)と、data.frame への後続の呼び出しがデフォルトの stringsAsFactors-behavior を適用するのを妨げる属性を設定しません。次のように設定することで、このような状況を実現できます。

  options(stringsAsFactors=FALSE)

一方、同様の動作を望んでいた場合は、列全体を data.frame に送信する必要があります。

> dtest2 <- data.frame(dtest)
> dtest3 <- data.frame(dtest[1])
> 
> str(c(dtest2, dtest3))
List of 2
 $ d: chr [1:5] "bla" "bla" "blou" "blou" ...
 $ d: chr [1:5] "bla" "bla" "blou" "blou" ...

データフレームのすべての列を再評価したい場合は、次のようにできると思います。

data.frame(lapply(dtest, as.vector) )

> str(data.frame(lapply(dtest, as.vector) ))
'data.frame':   5 obs. of  1 variable:
 $ d: Factor w/ 3 levels "bla","bli","blou": 1 1 3 3 2
于 2013-04-23T19:28:58.927 に答える