web-dev-qa-db-ja.com

Rでファイルにテキスト行を書き込む

Rスクリプト言語で、どうやってテキスト行を書くのですか?次の2行

Hello
World

"output.txt"という名前のファイルに?

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

実際にあなたはsink()でそれをすることができます

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

それゆえに:

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

この例のようにcat()コマンドを使用します。

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

これで、with Rの結果を見ることができます。

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

単純なwriteLines()についてはどうですか?

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

または

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

あなたは単一のステートメントでそれをすることができます

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

私は提案します:

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.
6
Gwang-Jin Kim

に基づいて ベストアンサー

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

yourObjectは文字列形式である必要があることに注意してください。必要ならばas.character()を使って変換してください。

しかし、これはevery保存の試みにはあまりにも多くの入力です。 RStudioでスニペットを作成しましょう。

グローバルオプション>>コード>>スニペットで、これを入力します。

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

次に、コーディング中にwfileと入力してを押します。 Tab

2
Luis Martins

可能性を締めくくるには、必要ならば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"
2
gung

醜いシステムオプション

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
1
kpie

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はファイルの終わりにnewlineを追加しますが、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オブジェクトwriteLinesa文字ベクトルを使うことです。引数として。だから書き出す。1:10という数字は、writeLinesにキャストする必要がありますが、catの場合と同じように使用できます。

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

パイプとwrite_lines()のreadrからの片付け版

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