programing

R의 파일에 텍스트 줄 쓰기

skycolor 2023. 7. 1. 08:15
반응형

R의 파일에 텍스트 줄 쓰기

R 스크립팅 언어에서 텍스트 줄을 작성하는 방법(예: 다음 두 줄)

Hello
World

이름이 "output.txt"인 파일로?

fileConn<-file("output.txt")
writeLines(c("Hello","World"), fileConn)
close(fileConn)

사실 당신은 그것을 할 수 있습니다.sink():

sink("outfile.txt")
cat("hello")
cat("\n")
cat("world")
sink()

따라서 다음을 수행합니다.

file.show("outfile.txt")
# hello
# world

나는 그것을 사용할 것입니다.cat()다음 예와 같은 명령:

> cat("Hello",file="outfile.txt",sep="\n")
> cat("World",file="outfile.txt",append=TRUE)

그런 다음 R을 사용하여 에서 결과를 볼 수 있습니다.

> file.show("outfile.txt")
hello
world

간단한 것은 무엇입니까?writeLines()?

txt <- "Hallo\nWorld"
writeLines(txt, "outfile.txt")

또는

txt <- c("Hallo", "World")
writeLines(txt, "outfile.txt")

제안합니다.

writeLines(c("Hello","World"), "output.txt")

현재 승인된 답변보다 짧고 직접적입니다.다음 작업을 수행할 필요가 없습니다.

fileConn<-file("output.txt")
# writeLines command using fileConn connection
close(fileConn)

다음에 대한 문서 때문입니다.writeLines()다음과 같이 말합니다.

만약에con문자열입니다. 함수가 호출합니다.file함수 호출 중에 열려 있는 파일 연결을 얻습니다.

# default settings for writeLines(): sep = "\n", useBytes = FALSE
# so: sep = "" would join all together e.g.

당신은 그것을 하나의 진술서로 할 수 있습니다.

cat("hello","world",file="output.txt",sep="\n",append=TRUE)

R의 파일에 텍스트 줄을 쓰는 짧은 방법은 이미 많은 답변에 나와 있듯이 cat 또는 writeLines를 사용하여 실현할 수 있습니다.가장 짧은 가능성 중 일부는 다음과 같습니다.

cat("Hello\nWorld", file="output.txt")
writeLines("Hello\nWorld", "output.txt")

"\n"이 마음에 들지 않는 경우 다음 스타일도 사용할 수 있습니다.

cat("Hello
World", file="output.txt")

writeLines("Hello
World", "output.txt")

하는 동안에writeLines파일 끝에 줄을 추가합니다. 파일 끝에 해당되지 않습니다.cat이 동작은 다음을 통해 조정할 수 있습니다.

writeLines("Hello\nWorld", "output.txt", sep="") #No newline at end of file
cat("Hello\nWorld\n", file="output.txt") #Newline at end of file
cat("Hello\nWorld", file="output.txt", sep="\n") #Newline at end of file

하지만 가장 큰 차이점은catR 객체를 사용합니다.writeLines인수로서의 문자 벡터따라서 를 들어 1:10이라는 숫자는 cat에서 그대로 사용할 수 있는 동안 writeLines에 캐스팅해야 합니다.

cat(1:10)
writeLines(as.character(1:10))

그리고.cat많은 물체를 가져갈 수 있지만,writeLines하나의 벡터만:

cat("Hello", "World", sep="\n")
writeLines(c("Hello", "World"))

기존 파일에 더 쉽게 추가할 수 있습니다.cat.

cat("Hello\n", file="output.txt")
cat("World", file="output.txt", append=TRUE)

writeLines("Hello", "output.txt")
CON <- file("output.txt", "a")
writeLines("World", CON)
close(CON)

반면에writeLines보다 빠름cat.

bench::mark(check=FALSE,
writeLines(c("Hello", "World")),
cat("Hello", "World", sep="\n"),
writeLines(c("Hello", "World"), sep=" "),
cat(c("Hello", "World")),
cat("Hello", "World") )
#  expression                                      min   median `itr/sec` mem_a…¹
#  <bch:expr>                                 <bch:tm> <bch:tm>     <dbl> <bch:b>
#1 writeLines(c("Hello", "World"))              2.27µs   4.77µs   163878.      0B
#2 cat("Hello", "World", sep = "\n")            3.83µs   8.51µs   118708.      0B
#3 writeLines(c("Hello", "World"), sep = " ")   1.99µs   4.25µs   235944.      0B
#4 cat(c("Hello", "World"))                      4.1µs   6.84µs   141797.      0B
#5 cat("Hello", "World")                        3.46µs   7.06µs   129865.      0B

파이프와 함께 깔끔한 버전과write_lines()독자로부터

library(tidyverse)
c('Hello', 'World') %>% write_lines( "output.txt")

간단한 것은 어떻습니까?write.table()?

text = c("Hello", "World")
write.table(text, file = "output.txt", col.names = F, row.names = F, quote = F)

매개 변수col.names = FALSE그리고.row.names = FALSEtxt의 행 및 열 이름과 매개 변수를 제외해야 합니다.quote = FALSEtxt의 각 줄의 시작과 끝에 있는 따옴표를 제외합니다.데이터를 다시 읽으려면 다음을 사용합니다.text = readLines("output.txt").

가능성을 정리하려면 다음을 사용할 수 있습니다.writeLines()와 함께sink()원하는 경우:

> sink("tempsink", type="output")
> writeLines("Hello\nWorld")
> sink()
> file.show("tempsink", delete.file=TRUE)
Hello
World

내가 보기에, 항상 가장 직관적으로 사용할 수 있는 것 같습니다.print()하지만 그렇게 하면 출력이 원하는 것이 되지 않습니다.

...
> print("Hello\nWorld")
...
[1] "Hello\nWorld"

최상의 답변을 토대로 함:

file <- file("test.txt")
writeLines(yourObject, file)
close(file)

참고:yourObject문자열 형식이어야 합니다. 사용as.character()필요한 경우 변환할 수 있습니다.

하지만 모든 저장 시도에는 너무 많은 타이핑이 필요합니다.RStudio에서 스니펫을 만들어 보겠습니다.

글로벌 옵션 >> 코드 >> 스니펫에서 다음을 입력합니다.

snippet wfile
    file <- file(${1:filename})
    writeLines(${2:yourObject}, file)
    close(file)

그런 다음 코딩 에 를 입력하고 를 누릅니다.

추한 시스템 옵션

ptf <- function (txtToPrint,outFile){system(paste(paste(paste("echo '",cat(txtToPrint),sep = "",collapse = NULL),"'>",sep = "",collapse = NULL),outFile))}
#Prints txtToPrint to outFile in cwd. #!/bin/bash echo txtToPrint > outFile

에서는 R의▁in는writeLines텍트에반공보백존포로필없함요습다가니할므되스이과환값▁in▁will없다,▁don▁returnst▁preserve▁need▁and'를 포함할 필요가 없습니다.\n줄의 끝에 하나의 큰 텍스트 덩어리를 파일에 쓸 수 있습니다.이는 예제와 함께 작동합니다.

txt <- "Hello
World"
fileConn<-file("output.txt")
writeLines(txt, fileConn)
close(fileConn)

그러나 이 설정을 사용하여 구조(줄 바꿈 또는 들여쓰기)가 있는 텍스트를 간단히 포함할 수도 있습니다.

txt <- "Hello
   world
 I can 
   indent text!"
fileConn<-file("output.txt")
writeLines(txt, fileConn)
close(fileConn)

언급URL : https://stackoverflow.com/questions/2470248/write-lines-of-text-to-a-file-in-r

반응형