有没有办法使用read.csv读取字符串值而不是R中的文件?

tom*_*eng 76 csv file-io r read.csv

我正在编写一个R包,其中R代码与Java应用程序进行通信.Java应用程序输出CSV格式的字符串,我希望R代码能够直接读取字符串并将其转换为data.frame.

Dir*_*tel 105

编辑一个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> 
Run Code Online (Sandbox Code Playgroud)

是的,看看帮助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
> 
Run Code Online (Sandbox Code Playgroud)

请注意,这是构建内容的简单方法,但由于重复解析了所有数据,因此成本很高.还有其他方法可以从Java到R,但这应该可以让你快速前进.效率接下来......

  • 更新的R版本有一个更简单的机制,请参阅@Adam Bradley在这个帖子中的答案:http://stackoverflow.com/a/16349171/17523 (8认同)

Ada*_*ley 77

请注意,在现在的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
Run Code Online (Sandbox Code Playgroud)

  • 我知道这本身有点迟了但是 - 将这个作为对已接受答案的编辑提交可能是有用的,因为OP现在不太可能改变已接受的答案,但现在这似乎是更好的答案? (5认同)