R의 파일이 아닌 문자열 값에서 읽기 위해 read.csv를 사용하는 방법이 있습니까?
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>
예, 도움말을보십시오. R textConnection()의 매우 강력한 개념은 본질적으로 모든 독자 (예 : 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
>
이것은 무언가를 만드는 간단한 방법이지만 모든 데이터의 반복적 인 구문 분석으로 인해 비용이 많이 듭니다 . 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
완벽하지는 않지만 (열 이름 수정 ...) 시작일뿐입니다.
This function wraps Dirk's answer into a convenient form. It's brilliant for answering questions on SO, where the asker has just dumped the data onscreen.
text_to_table <- function(text, ...)
{
dfr <- read.table(tc <- textConnection(text), ...)
close(tc)
dfr
}
To use it, first copy the onscreen data and paste into your text editor.
foo bar baz
1 2 a
3 4 b
Now wrap it with text_to_table, quotes and any other arguments for read.table.
text_to_table("foo bar baz
1 2 a
3 4 b", header = TRUE)
'Program Club' 카테고리의 다른 글
| Browserify, Babel 6, Gulp-스프레드 연산자에 예기치 않은 토큰 (0) | 2020.10.20 |
|---|---|
| JSP EL 문자열 연결 (0) | 2020.10.20 |
| 자바 스크립트 : 숫자의 x % 계산 (0) | 2020.10.20 |
| Grand Central Dispatch에서 dispatch_sync 사용 (0) | 2020.10.20 |
| Option [X]의 Scala 컬렉션을 X의 컬렉션으로 변환하는 방법 (0) | 2020.10.20 |