R komut dosyası dilinde, nasıl metin satırları yazarım, örneğin aşağıdaki iki satır
Hello
World
"output.txt" adlı bir dosyaya?
R komut dosyası dilinde, nasıl metin satırları yazarım, örneğin aşağıdaki iki satır
Hello
World
"output.txt" adlı bir dosyaya?
Yanıtlar:
fileConn<-file("output.txt")
writeLines(c("Hello","World"), fileConn)
close(fileConn)
writeLines()yaklaşık on kat daha hızlı daha sonra birleşimidir sink()vecat()
Aslında yapabilirsiniz bunu yapmak sink():
sink("outfile.txt")
cat("hello")
cat("\n")
cat("world")
sink()
dolayısıyla:
file.show("outfile.txt")
# hello
# world
Basit olan ne writeLines()?
txt <- "Hallo\nWorld"
writeLines(txt, "outfile.txt")
veya
txt <- c("Hallo", "World")
writeLines(txt, "outfile.txt")
"Hallo\nWorld"karakter tipinin uzunluk bir vektörüdür. Sadece denetxt <- "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
Bunu tek bir açıklamada yapabilirsiniz
cat("hello","world",file="output.txt",sep="\n",append=TRUE)
Öneririm:
writeLines(c("Hello","World"), "output.txt")
Şu an kabul edilen cevaptan daha kısa ve daha doğrudan. Yapmanız gerekli değildir:
fileConn<-file("output.txt")
# writeLines command using fileConn connection
close(fileConn)
Çünkü için belgeler writeLines()diyor ki:
Eğer
conbir karakter dizesidir, fonksiyon çağrılarıfileişlev çağrısı süresince açılmış bir dosya bağlantısı elde etmek.
# default settings for writeLines(): sep = "\n", useBytes = FALSE
# so: sep = "" would join all together e.g.
tidyverse baskı boru ve write_lines()readr
library(tidyverse)
c('Hello', 'World') %>% write_lines( "output.txt")
R'deki bir dosyaya metin satırları yazmanın kısa yolları , birçok cevapta zaten gösterildiği gibi cat veya writeLines ile gerçekleştirilebilir . En kısa olasılıklardan bazıları şunlar olabilir:
cat("Hello\nWorld", file="output.txt")
writeLines("Hello\nWorld", "output.txt")
"\ N" yi beğenmiyorsanız aşağıdaki stili de kullanabilirsiniz:
cat("Hello
World", file="output.txt")
writeLines("Hello
World", "output.txt")
İken writeLines bir ekler satırsonu için durum böyle değil neyi dosyanın sonuna kedi . Bu davranış aşağıdakiler tarafından ayarlanabilir:
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
Ama temel fark olmasıdır kedi kullandığı nesneleri R ve writeLines bir karakter vektör argüman olarak. Bu nedenle, örneğin 1:10 sayılarının writeLines için dökülmesi gerekirken, kedide olduğu gibi kullanılabilir:
cat(1:10)
writeLines(as.character(1:10))
Olasılıklar üzerinden yuvarlak için kullanabilirsiniz writeLines()ile sink()isterseniz:
> sink("tempsink", type="output")
> writeLines("Hello\nWorld")
> sink()
> file.show("tempsink", delete.file=TRUE)
Hello
World
Bana göre, her zaman kullanımı en sezgisel görünüyor print(), ancak bunu yaparsanız çıktı istediğiniz gibi olmaz:
...
> print("Hello\nWorld")
...
[1] "Hello\nWorld"
En iyi cevaba dayanarak :
file <- file("test.txt")
writeLines(yourObject, file)
close(file)
yourObjectBir dize biçiminde olması gerektiğini unutmayın ; kullanımas.character()gerekiyorsa dönüştürmek için .
Ama bu her şey için çok fazla yazıyor kaydetme girişimi . RStudio'da bir snippet oluşturalım.
Genel Seçenekler >> Kod >> Parçacık alanına şunu yazın:
snippet wfile
file <- file(${1:filename})
writeLines(${2:yourObject}, file)
close(file)
Ardından, kodlama sırasında yazın wfileve tuşuna basınTab .
file <- file(...)Satır bana şüpheli görünüyor. Hem filebir işlev olarak çağırmak hem de fileyeni bir anlam vermek değil mi? Does file()bile kod çalışır bu parça sonra işi? Şu anda kendimi test etmek için R kurulumuna
Basit olan ne olacak write.table()?
text = c("Hello", "World")
write.table(text, file = "output.txt", col.names = F, row.names = F, quote = F)
Parametreler col.names = FALSEve row.names = FALSEtxt'deki satır ve sütun adlarını hariç tuttuğunuzdan emin olun ve parametre, quote = FALSEtxt'deki her satırın başında ve sonunda bu tırnak işaretlerini hariç tutar. Verileri tekrar okumak için kullanabilirsiniz text = readLines("output.txt").
R'nin yeni sürümlerinde, writeLinesmetninizdeki dönüşleri ve boşlukları koruyacaktır, bu nedenle \nsatırların sonuna eklemenize gerek yoktur ve bir dosyaya büyük bir metin parçası yazabilirsiniz. Bu örnekle çalışacaktır,
txt <- "Hello
World"
fileConn<-file("output.txt")
writeLines(txt, fileConn)
close(fileConn)
Ancak bu kurulumu, yalnızca yapıya sahip metinler (satır aralıkları veya girintiler) eklemek için de kullanabilirsiniz.
txt <- "Hello
world
I can
indent text!"
fileConn<-file("output.txt")
writeLines(txt, fileConn)
close(fileConn)