read.csvを使用して、rのファイルではなく文字列値から読み取る方法はありますか?

StackOverflow https://stackoverflow.com/questions/3936285

  •  30-09-2019
  •  | 
  •  

質問

RコードがJavaアプリケーションに話しかけるRパッケージを書いています。 JavaアプリケーションはCSVフォーマットされた文字列を出力し、Rコードを文字列を直接読み取り、data.frameに変換できるようにしたい。

役に立ちましたか?

解決

7歳の回答の編集: 今では、これです 多くの よりシンプルな感謝 text= 追加された議論 read.csv() そして同様に:

R> data <- read.csv(text="flim,flam
+ 1.2,2.2
+ 77.1,3.14")
R> data
  flim flam
1  1.2 2.20
2 77.1 3.14
R> 

はい、助けを見てください textConnection() - とてもパワフルな Rの概念は、本質的にすべての読者が read.table() およびそのバリエーション)これらにアクセスします 繋がり ファイル、リモートURL、または別のアプリから入ってくるパイプ、または...あなたの場合のようないくつかのテキストである可能性のあるオブジェクト。

ここでは、いわゆるドキュメントにも同じトリックが使用されます。

> lines <- "
+ flim,flam
+ 1.2,2.2
+ 77.1,3.14
+ "
> con <- textConnection(lines)
> data <- read.csv(con)
> close(con)
> data
  flim flam
1  1.2 2.20
2 77.1 3.14
> 

これはaです 単純 何かを構築する方法もそうです 費用がかかります すべてのデータの解析が繰り返されるため。 JavaからRに到達する他の方法がありますが、これによりすぐに進む必要があります。効率が次に来ます...

他のヒント

Rの現在のバージョンでは、もはや必要ではないことに注意してください。 textConnection(), 、単にこれを行うことができます:

> states.str='"State","Abbreviation"
+ "Alabama","AL"
+ "Alaska","AK"
+ "Arizona","AZ"
+ "Arkansas","AR"
+ "California","CA"'
> read.csv(text=states.str)
       State Abbreviation
1    Alabama           AL
2     Alaska           AK
3    Arizona           AZ
4   Arkansas           AR
5 California           CA

はい。例えば:

string <- "this,will,be\na,data,frame"
x <- read.csv(con <- textConnection(string), header=FALSE)
close(con)
#> x
#    V1   V2    V3
#1 this will    be
#2    a data frame

Tommy.csv(はい、想像力、私は知っている...)というファイルがあるとします。

col1 col2 n 1 1 n 2 2 n 3 3

ここで、各線はエスケープ文字「 n」で分離されています。

このファイルは、の助けを借りて読み取ることができます allowEscapes 議論 read.table.

> read.table("tommy.csv", header = TRUE, allowEscapes = TRUE)

  col1 col2
1 col1 col2
2    1    1
3    2    2
4    3    3

それは完璧ではありません(列名を変更します...)が、それは始まりです。

この関数は、Dirkの答えを便利な形に包みます。質問に答えるのは素晴らしいことです。そこでは、質問者が画面上にデータを捨てたばかりです。

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

それを使用するには、最初に画面上のデータをコピーして、テキストエディターに貼り付けます。

foo bar baz
1 2 a
3 4 b

今それを包みます text_to_table, 、引用とその他の議論 read.table.

text_to_table("foo bar baz
1 2 a
3 4 b", header = TRUE)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top