2016-12-28 15 views
0
data <- sqlQuery(connection, "SELECT col1, col2, col3 FROM table1") 

d <- data.frame(data, stringsAsFactors = FALSE) 

またはdata.frame()のstringsAsFactorsはどのように動作しますか?この例では

transform(d, col1 = as.character(col1), stringsAsFactors = FALSE) 

dまだ列のfactor種類があります。

str(d) 

'd': 1943 obs. of 4 variables: 
$ col1: Factor w/ 5 levels .... 

しかし、私が最初に述べるとき、

options(stringsAsFactors = FALSE) 

これは機能しますが、グローバルに設定します。内部のステートメントは効果がないのはなぜですか?デビッドAhrenburgのコメントをエラボレーション

+0

'自体data'ました'data.frame'を' factor 'として 'col1'と呼んでいます。 'stringsAsFactors = FALSE'で' col1'変数を 'd 'に別々に追加してください。 –

+0

'データ 'とは何ですか?あなたの質問を改善するために、例[here](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)を参照してください。私は、再現可能な例を作成している間は、data.frame()の* stringsAsFactorsがうまくいかないことを理解しているでしょう。* –

+0

'?data.frame'を慎重に読んでください。すべての単一の引数は 'data.frame'に強制されます。したがって、引数のいずれかがすでに 'data.frame'の場合、何も変わりません。新しい文字列は 'stringsAsFactors'に従って強制されます。 'transform'の部分については、関数の引数*を参照*で変更しないので、結果を返すようにしてください。' d <-transform(d、col1 = as.character(col1)) 'ここの 'stringsAsFactors'引数は必要ありません)。 – nicola

答えて

2

、パッケージの

data <- sqlQuery(connection, "SELECT col1, col2, col3 FROM table1", stringsAsFactors = FALSE) 

ヘルプページ?sqlQueryを試してみてくださいRODBC言う:

sqlQueryRODBCの主力機能です。 SQL文のクエリをサーバー[...]に送信し、結果の一部(またはすべて)をsqlGetResultsで取得します。

sqlQuerysqlGetResultsに渡される追加の引数の...パラメータがあります。

次のデフォルトを使用して、引数stringsAsFactorsがあることがわかります(同じヘルプページ上)sqlGetResultsの使用セクションを見る:

stringsAsFactors = default.stringsAsFactors()

関連する問題