2012-04-12 51 views
22

rbinddo.callに渡したいと思います。しかし、次のように動作しません:Rのdo.callの関数引数に余分な引数を渡す方法

data <- do.call(rbind, 
      strsplit(readLines("/home/jianfezhang/adoption.txt"), split="\t#\t"), 
      args=list(stringsAsFactors=FALSE)) 
+1

rbindはdeparse.level(stringsAsFactorsではない)引数のみを持ちます。 –

+0

あなたのデータを垣間見るのはいかがですか? - 最小限の再現可能な例(例: 'dput(readLines("/home/jianfezhang/adoption.txt "、n = 5))') – BenBarnes

答えて

18
do.call(rbind.data.frame, c(list(iris), list(iris), stringsAsFactors=FALSE)) 

ことにより、2つのリストをCONCATすることができます。

strsplitの出力はおそらくベクトルのリストであり、その場合はrbindが行列を作成します。 data.frameにこの行列を変換するときに、グローバルoptionsを使用して、あなたがFALSEstringsAsFactorsを設定することができ、また、

data.frame(do.call(rbind, list(1:10, letters[1:10])), stringsAsFactors=FALSE) 
1

私はあなたの関数呼び出しが有効であるかどうかわからないんだけど、これを試してみてください。

data <- do.call(rbind, 
    c(strsplit(readLines("/home/jianfezhang/adoption.txt"),split="\t#\t"), 
    list(stringsAsFactors=FALSE)) 

あなたは1つのリストを経由してdo.callにすべての引数を渡す必要があります。 あなたはそれがrbindstringsAsFactors(しかしcbind.data.frameでしょう)で何をすべきかわからないという事実のためではなかった場合、私の答えだったでしょうc

> c(list(1, 2), list(3, 4)) 
[[1]] 
[1] 1 

[[2]] 
[1] 2 

[[3]] 
[1] 3 

[[4]] 
[1] 4 
5

stringsAsFactorsを指定することができます。

options(stringsAsFactors=FALSE) 

スクリプトの先頭でこれを設定すると、強制されますこのスクリプトを通して開いているすべてのRセッションに対してこのオプションを設定するには、.Rprofileに追加することもできます。

関連する問題