2016-09-19 8 views
0

[x1 y1] [x2 y2] 형식의 psuedo 좌표가 포함 된 텍스트 파일이 여러 개 있습니다.이 파일을 R로 가져와 분석 할 수 있도록 노력하고 있습니다. 그들. 그러나 read.table을 사용하여 변수를 가져 오면 두 변수 (x 및 y)와 함께 각 값이 "[x"또는 "y]"가되고 각 변수는 여러 가지 요인이됩니다. 내 질문에 값을 x 값 및 y 값의 데이터 프레임 수 있도록 데이터를 가져 오거나 조작 할 수있는 방법이 있습니까?가져온 목록에서 [및] 가져 오기 목록에서 제거

나는 SUBSTR()하지만
얻을 사용하여 "["와 "]"문자를 제거하는 시도 :
"NCHAR에 오류 (테스트 [1, 2]) 'NCHAR는()'는 문자 벡터가 필요합니다" 오류 메시지로.

+4

을 howovertoflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)? –

답변

2

이 입력 파일 가정 수 있습니다 그것은 당신의 작업 디렉토리에이고 "fil.txt"

[5 6][7 8][9 10] 
[5 6][7 8][9 10] 
[5 6][7 8][9 10] 

는 그런 다음 "] ["쌍을 제거 readLines를 사용할 수 있으며, 시작과 끝이라는 // : "["와 "]"각 라인에서 다음 쌍 값을 읽을 scan를 사용 : 당신이 [재현 예 (http로 우리를 제공 할 것입니다 데이터 및/또는 코드를 포함시겠습니까

x <-"[5 6][7 8][9 1 
[5 6][7 8][9 10] 
[5 6][7 8][9 10]" 

scan(text= gsub("(^\\[)|(\\]$)", "", gsub("\\]\\[", " ", readLines(textConnection(x)))), what = list(numeric(), numeric())) 
Read 9 records 
[[1]] 
[1] 5 7 9 5 7 9 5 7 9 

[[2]] 
[1] 6 8 10 6 8 10 6 8 10 

# I later realized the pattern could just be "\\[|\\]" and use a single gsub() 

> as.data.frame(.Last.value, col.names=c("x","y")) 
    x y 
1 5 6 
2 7 8 
3 9 10 
4 5 6 
5 7 8 
6 9 10 
7 5 6 
8 7 8 
9 9 10