ในภาษาสคริปต์ R ฉันจะเขียนบรรทัดข้อความได้อย่างไรเช่นสองบรรทัดต่อไปนี้
Hello
World
ไฟล์ที่ชื่อว่า "output.txt"?
ในภาษาสคริปต์ R ฉันจะเขียนบรรทัดข้อความได้อย่างไรเช่นสองบรรทัดต่อไปนี้
Hello
World
ไฟล์ที่ชื่อว่า "output.txt"?
คำตอบ:
fileConn<-file("output.txt")
writeLines(c("Hello","World"), fileConn)
close(fileConn)
writeLines()
คือประมาณสิบครั้งได้เร็วขึ้นแล้วการรวมกันของsink()
และcat()
ที่จริงคุณสามารถทำได้ด้วย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")
"Hallo\nWorld"
มีความยาวหนึ่งเวกเตอร์ของประเภทอักขระ เพิ่งลองtxt <- "Hallo\nWorld"; is.character(txt) && length(txt) == 1 && is.vector(txt)
writeLines(txt, con="outfile.txt")
งานนี้สำหรับฉันเป็นเพียง
> coefficients<-summary(model) > writeLines(coefficients, "coefficients") Error in writeLines(coefficients, "coefficients") : invalid 'text' argument
คุณสามารถทำได้ในคำสั่งเดียว
cat("hello","world",file="output.txt",sep="\n",append=TRUE)
ฉันแนะนำ:
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.
ฉบับเรียบร้อยด้วยท่อและwrite_lines()
จาก readr
library(tidyverse)
c('Hello', 'World') %>% write_lines( "output.txt")
วิธีสั้น ๆ ในการเขียนบรรทัดข้อความไปยังไฟล์ใน 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เพิ่มขึ้นบรรทัดใหม่ในตอนท้ายของแฟ้มสิ่งที่ไม่เป็นกรณีสำหรับแมว พฤติกรรมนี้สามารถปรับได้โดย:
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
แต่ความแตกต่างที่สำคัญคือแมวใช้R วัตถุและwriteLines เวกเตอร์ตัวละครเป็นอาร์กิวเมนต์ ดังนั้นการเขียนออกมาเช่นหมายเลข1:10จะต้องมีการใช้งาน castLines ในขณะที่สามารถใช้งานได้เหมือนในแมว:
cat(1:10)
writeLines(as.character(1:10))
หากต้องการปัดเศษความเป็นไปได้คุณสามารถใช้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)
จากนั้นในช่วงการเข้ารหัสประเภทwfile
Tabและกด
file <- file(...)
สายดูน่าสงสัยให้ฉัน มันไม่ใช่ทั้งการเรียกใช้file
เป็นฟังก์ชั่นและการกำหนดfile
ความหมายใหม่หรือไม่? ไม่file()
ทำงานแม้หลังจากที่ชิ้นส่วนของรหัสวิ่งนี้หรือไม่? ไม่สามารถเข้าถึงการติดตั้ง R เพื่อทดสอบตัวเองได้ในตอนนี้ ...
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
สิ่งที่เกี่ยวกับที่เรียบง่าย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 = FALSE
ตรวจสอบให้แน่ใจว่าไม่รวมชื่อแถวและคอลัมน์ใน txt และพารามิเตอร์quote = FALSE
ไม่รวมเครื่องหมายคำพูดเหล่านั้นที่จุดเริ่มต้นและจุดสิ้นสุดของแต่ละบรรทัดใน txt text = readLines("output.txt")
หากต้องการอ่านกลับข้อมูลในคุณสามารถใช้
ใน R เวอร์ชั่นใหม่writeLines
จะรักษาผลตอบแทนและช่องว่างในข้อความของคุณดังนั้นคุณไม่จำเป็นต้องรวม\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)