R Language
문자열 읽기 및 쓰기
수색…
비고
관련 문서 :
문자열 인쇄 및 표시
R에는 정보를 인쇄하거나 표시하는 데 사용할 수있는 몇 가지 기본 제공 기능이 있지만 print
및 cat
가 가장 기본입니다. R은 해석 된 언어 이므로 R 콘솔에서 직접 이러한 언어 를 사용해 볼 수 있습니다.
print("Hello World")
#[1] "Hello World"
cat("Hello World\n")
#Hello World
두 함수의 입력과 출력의 차이점에 유의하십시오. (주 : x <- "Hello World"
작성된 x
의 값에는 따옴표 문자가 없으며 출력 단계에서 print
로 추가됩니다.)
cat
은 하나 이상의 문자 벡터를 인수로 취해 콘솔에 출력합니다. 문자 벡터의 길이가 1보다 큰 경우 인수는 공백으로 구분됩니다 (기본적으로).
cat(c("hello", "world", "\n"))
#hello world
개행 문자 ( \n
)가 없으면 출력은 다음과 같습니다.
cat("Hello World")
#Hello World>
다음 명령에 대한 프롬프트는 출력 직후 나타납니다. (RStudio 's와 같은 일부 콘솔은 개행 문자로 끝나지 않는 문자열에 개행 문자를 자동으로 추가 할 수 있습니다.)
print
는 전달 된 첫 번째 인수의 클래스가 감지되고 클래스 특정 메서드 가 출력에 사용되는 "일반"함수의 예입니다. "Hello World"
와 같은 문자 벡터의 경우 결과는 cat
의 출력과 유사합니다. 그러나 문자 문자열은 인용되고 숫자 [1]
은 문자 벡터의 첫 번째 요소를 나타 내기 위해 출력됩니다 (이 경우 첫 번째이자 유일한 요소).
print("Hello World")
#[1] "Hello World"
이 기본 인쇄 방법은 R에 변수를 인쇄하도록 요청할 때도 표시됩니다. 타이핑 s
출력이 print(s)
또는 print("Hello World")
를 호출하는 것과 어떻게 다른지 주목하십시오 :
s <- "Hello World"
s
#[1] "Hello World"
또는 아무 것도 지정하지 않아도됩니다.
"Hello World"
#[1] "Hello World"
우리가합니다 (사용하여 벡터의 두 번째 요소로 다른 문자열을 추가하는 경우 c()
함께 요소 oncatenate C의 기능), 다음의 동작 print()
는 다른 꽤 보이는 cat
:
print(c("Hello World", "Here I am."))
#[1] "Hello World" "Here I am."
c()
함수는 문자열 연결을 수행하지 않습니다 . (그 목적을 위해 paste
를 사용해야합니다.) R은 문자 벡터가 두 요소를 따로 따로 인용하여 나타냅니다. 여러 줄에 걸쳐있을만큼 긴 벡터를 가지고 있다면, 첫 줄의 처음에 [1]
을 인쇄하는 것처럼, R은 각 줄을 시작하는 요소의 색인을 인쇄합니다.
c("Hello World", "Here I am!", "This next string is really long.")
#[1] "Hello World" "Here I am!"
#[3] "This next string is really long."
print
의 특별한 동작은 함수에 전달 된 객체의 클래스 에 달려 있습니다.
"숫자"또는 "논리적"과 같이 다른 클래스를 가진 객체를 print
라고 부르는 경우 출력에서 인용 부호가 생략되어 문자 클래스가 아닌 객체를 처리하고 있음을 나타냅니다.
print(1)
#[1] 1
print(TRUE)
#[1] TRUE
Factor 객체는 콘솔 변수가 SO 문항에 객체를 표시하는 데 사용될 때 종종 모호함을 만드는 문자 변수와 같은 방식으로 인쇄됩니다. 대화 형 환경을 제외하고는 cat
또는 print
를 사용하는 경우는 거의 없습니다. 명시 적으로 print()
호출하는 것은 콘솔에서 foo
를 입력하면 print(foo)
의 바로 가기가되므로 따옴표의 모양을 invisible
거나 함수에서 invisible
것으로 반환되는 객체를 보지 않는 한 특히 드문 경우입니다. R의 대화 형 콘솔은 REPL, "read-eval-print-loop"로 알려져 있습니다. cat
함수는 특수 목적 (예 : 열린 파일 연결에 출력 작성)으로 저장하는 것이 가장 좋습니다. 때로는 함수 내부에서 ( print()
대한 호출이 억제 된) 사용 되지만 , 콘솔에 출력을 생성하는 함수 내에서 cat()
사용하는 것은 좋지 않습니다 . 우선적 인 방법은 중간 메시지를위한 message()
또는 warning()
입니다. 그들은 cat
과 유사하게 행동하지만, 최종 사용자에 의해 선택적으로 억제 될 수 있습니다. 최종 결과는 사용자가 필요에 따라 저장하도록 지정할 수 있도록 반환되어야합니다.
message("hello world")
#hello world
suppressMessages(message("hello world"))
파일 연결 읽기 또는 쓰기
항상 우리는 로컬 시스템 경로에서 읽고 쓸 자유가 없습니다. 예를 들어 R 코드 스트리밍 map-reduce가 파일 연결을 읽고 쓰는 것이 필요하다면. 로컬 시스템을 넘어서고 클라우드와 빅 데이터의 출현과 함께 다른 시나리오가있을 수 있습니다. 이는 점차 보편화되고 있습니다. 이 작업을 수행하는 방법 중 하나는 논리적 인 순서입니다.
file()
명령으로 읽을 파일 연결을 설정합니다 ( "r"은 읽기 모드 용입니다).
conn <- file("/path/example.data", "r") #when file is in local system
conn1 <- file("stdin", "r") #when just standard input/output for files are available
이렇게하면 파일 연결이 설정되므로 다음과 같이이 파일 연결에서 데이터를 읽을 수 있습니다.
line <- readLines(conn, n=1, warn=FALSE)
여기서는 파일 연결 conn
한 줄씩 n=1
로 데이터를 읽습니다. 빠른 읽기 (한 번에 10 또는 20 라인 블록 읽기)를 위해 데이터 블록을 읽는 데 n
(예 : 10, 20 등)의 값을 변경할 수 있습니다. 완전한 파일을 읽으려면 n=-1
로 설정하십시오.
데이터 처리 또는 모델 실행 후; 파일 연결에 쓸 수있는 writeLines(),cat()
등의 많은 다른 명령을 사용하여 결과를 파일 연결에 다시 쓸 수 있습니다. 그러나이 모든 명령은 쓰기 위해 설정된 파일 연결을 활용합니다. 이것은 file()
명령을 다음과 같이 사용하여 수행 할 수 있습니다.
conn2 <- file("/path/result.data", "w") #when file is in local system
conn3 <- file("stdout", "w") #when just standard input/output for files are available
그런 다음 다음과 같이 데이터를 작성하십시오.
writeLines("text",conn2, sep = "\n")
운영 체제 명령 출력 캡처
문자 벡터를 반환하는 함수
Base R
에는 시스템 명령을 호출하는 두 가지 기능이 있습니다. 둘 다 시스템 명령의 출력을 캡처하기 위해 추가 매개 변수가 필요합니다.
system("top -a -b -n 1", intern = TRUE)
system2("top", "-a -b -n 1", stdout = TRUE)
둘 다 문자 벡터를 반환합니다.
[1] "top - 08:52:03 up 70 days, 15:09, 0 users, load average: 0.00, 0.00, 0.00"
[2] "Tasks: 125 total, 1 running, 124 sleeping, 0 stopped, 0 zombie"
[3] "Cpu(s): 0.9%us, 0.3%sy, 0.0%ni, 98.7%id, 0.1%wa, 0.0%hi, 0.0%si, 0.0%st"
[4] "Mem: 12194312k total, 3613292k used, 8581020k free, 216940k buffers"
[5] "Swap: 12582908k total, 2334156k used, 10248752k free, 1682340k cached"
[6] ""
[7] " PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND "
[8] "11300 root 20 0 1278m 375m 3696 S 0.0 3.2 124:40.92 trala "
[9] " 6093 user1 20 0 1817m 269m 1888 S 0.0 2.3 12:17.96 R "
[10] " 4949 user2 20 0 1917m 214m 1888 S 0.0 1.8 11:16.73 R "
예를 들어, UNIX 명령
top -a -b -n 1
이 사용됩니다. 이는 OS마다 다르기 때문에 컴퓨터에서 예제를 실행하려면 수정해야 할 수도 있습니다.
패키지 devtools
에는 시스템 명령을 실행하고 추가 매개 변수없이 출력을 캡처하는 기능이 있습니다. 또한 문자 벡터를 반환합니다.
devtools::system_output("top", "-a -b -n 1")
데이터 프레임을 반환하는 함수
data.table
패키지의 fread
함수는 쉘 명령을 실행하고 read.table
과 같은 출력을 읽을 수 read.table
합니다. 그것은 반환 data.table
또는 data.frame
.
fread("top -a -b -n 1", check.names = TRUE)
PID USER PR NI VIRT RES SHR S X.CPU X.MEM TIME. COMMAND
1: 11300 root 20 0 1278m 375m 3696 S 0 3.2 124:40.92 trala
2: 6093 user1 20 0 1817m 269m 1888 S 0 2.3 12:18.56 R
3: 4949 user2 20 0 1917m 214m 1888 S 0 1.8 11:17.33 R
4: 7922 user3 20 0 3094m 131m 1892 S 0 1.1 21:04.95 R
이 fread
자동으로 상위 6 개의 헤더 행을 건너 뛰었습니다.
여기서 매개 변수
check.names = TRUE
가%CPU
,%MEN
및TIME+
을 구문 론적으로 유효한 열 이름으로 변환하기 위해 추가되었습니다.