2016-04-19 1 views
1

データソースに読み込むテーブルソースがあります。私はデフォルトで、外部ソースが要素としてデータフレームに読み込まれることを知っています。以下のデータフレームコールでstringsAsFactors=FALSEを適用したいが、これを行うとエラーが発生する。引き続きチェーンを使用してstringsAsFactors=FALSEを使用できますか?文字列を要素としたData.Framesの読み込み= Rのチェーン演算子を使用したFalse

library(rvest) 
pvbData <- read_html(pvbURL) 
pvbDF <- pvbData %>% 
html_nodes(xpath = `//*[@id="ajax_result_table"]`) %>% 
html_table() %>% 
data.frame() 

data.frame(,stringsAsFactors=FALSE) <- Throws an error 

これはおそらく非常に簡単なことですが、この作業を行う方法を見つけるのが難しいです。ご協力ありがとうございました。

答えて

2

連鎖を適用する場合、ステートメントは論理的にdata.frame(stringsAsFactors=FALSE)である必要がありますが、このステートメントでも必要な出力は生成されません。

理由は、stringsAsFactorsオプションの誤解です。このオプションは、data.frameを列ごとに作成する場合にのみ機能します。例:あなたが入力としてdata.frameを与える場合

a <- data.frame(x = c('a','b'),y=c(1,2),stringsAsFactors = T) 
str(a) 

'data.frame': 2 obs. of 2 variables: 
$ x: Factor w/ 2 levels "a","b": 1 2 
$ y: num 1 2 

a <- data.frame(x = c('a','b'),y=c(1,2),stringsAsFactors = F) 
str(a) 

'data.frame': 2 obs. of 2 variables: 
$ x: chr "a" "b" 
$ y: num 1 2 

、stringsAsFactorsオプションが動作しません

ソリューション:

店このような変数への連鎖結果:

library(rvest) 
pvbData <- read_html(pvbURL) 
pvbDF <- pvbData %>% 
html_nodes(xpath = `//*[@id="ajax_result_table"]`) %>% 
html_table() 

このコマンドを適用してください:

data.frame(as.list(pvbDF),stringsAsFactors=F) 

更新:

この列が既に要素の場合、このコマンドを使用して文字ベクトルに変換することはできません。最初にそれを文字化けして再試行してください。

詳細はChange stringsAsFactors settings for data.frameを参照してください。