수색…


비고

관련 문서 :

문자열 인쇄 및 표시

R에는 정보를 인쇄하거나 표시하는 데 사용할 수있는 몇 가지 기본 제공 기능이 있지만 printcat 가 가장 기본입니다. 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 , %MENTIME+ 을 구문 론적으로 유효한 열 이름으로 변환하기 위해 추가되었습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow