17

R の read.table および read.csv 関数は、区切りデータを含むファイルまたは URL を解析し、R データ フレームを生成するために使用されます。ただし、CSV で区切られたデータ (列とレコードの区切り記号としてコンマと \n を使用) を含む文字ベクトルが既にあるので、ファイルまたは URL から読み取る必要はありません。この文字ベクトルを最初にディスク上のファイルに書き込んで読み戻さずにread.table、 、read.csv、またはに渡すにはどうすればよいですか? scan()ディスクへの書き込みは可能ですが、この不要なラウンドトリップを必要とせず、文字ベクトルから直接データを読み取ることができるソリューションを探しています。

4

2 に答える 2

26

textConnection() を使用して、文字ベクトルを read.table() に渡すことができます。例:

x  <- "first,second\nthird,fourth\n"
x1 <- read.table(textConnection(x), sep = ",")
# x1
     V1     V2
1 first second
2 third fourth

Rメーリングリストで回答が見つかりました。

2017編集

7年後、私はおそらく次のようにします:

read.table(text = x, sep = ",")
于 2010-07-16T01:36:27.187 に答える
3

neilfwsの回答へのマイナーな補遺。このラッパー関数は、質問者がデータ フレームを提供するのではなく生データを質問に配置した場合に、stackoverflow に関する質問に回答するのに役立ちます。

textToTable <- function(text, ...)
{
   dfr <- read.table(tc <- textConnection(text), ...)
   close(tc)
   dfr
}

使用法、例えば

textToTable("first,second\nthird,fourth\n", sep = ",")
于 2010-07-16T11:11:05.483 に答える