আর-তে কোনও ফাইলের পাঠ্যগুলির লাইন লিখুন


341

আর স্ক্রিপ্টিং ভাষায়, আমি কীভাবে পাঠ্যের লাইন লিখব, উদাহরণস্বরূপ নীচের দুটি লাইন

Hello
World

"আউটপুট.টেক্সট" নামের একটি ফাইলের কাছে?

উত্তর:


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

7
চিহ্নিত করুন - আমার যদি একাধিক থ্রেড থাকে তবে সমস্তগুলিই আমি একই ফাইলটিতে লাইন যুক্ত করতে চাই? (সমস্যাটি হ'ল এটি হ'ল কোনও ফাইলের সাথে আপনার আর একটি সংযোগ থাকতে পারে না, যদি আমার ভুল না হয়) ধন্যবাদ।
তাল গালিলি

8
@ টাল, এটি একটি দুর্দান্ত প্রশ্ন, আপনার এটি একটি নতুন, পৃথক প্রশ্ন হিসাবে পোস্ট করা উচিত যাতে এটি কিছুটা মনোযোগ পাবে। আমার চেয়ে এখানে আরও অনেক জ্ঞানী আর প্রোগ্রামার রয়েছে!
চিহ্নিত করুন

8
নোট করুন যে এর জন্য ইতিমধ্যে বিদ্যমান "আউটপুট. টেক্সট" ফাইলটি প্রয়োজন। যদি এটি না হয় তবে এটি অবশ্যই প্রথমে তৈরি করা উচিত, যেমন 'file.create ("output.txt")' ব্যবহার করে।
জ্বিন

20
@ জিন আমি নিশ্চিত না যে এটি সত্য কিনা। আরস্টুডিও 0.98 এবং আর সংস্করণ 3.1.0 ব্যবহার করে ফাইলটি উপস্থিত না থাকলে স্বয়ংক্রিয়ভাবে তৈরি হয়ে যায়
JHowIX

4
বিকল্পটি writeLines()প্রায় দশগুণ দ্রুত হয় তারপরে sink()এবংcat()
rafa.pereira এর মিশ্রণ

151

আসলে আপনি এটি দিয়ে এটি করতে পারেনsink() :

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

অতএব করুন:

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

সিঙ্ক () ডেটাব্রিক্সে কাজ করে না সাবধানতা অবলম্বন করুন। আপনি একটি ফাংশন ভিতরে এই সব করা ব্যবহার এবং (funciton কল, ফাইলের নাম) capture.output মত এই ফাংশন কল করতে পারেন
abdkumar

109

আমি cat()কমান্ডটি এই উদাহরণ হিসাবে ব্যবহার করব :

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

এরপরে আপনি আর এর মাধ্যমে ফলাফলগুলি দেখতে পারবেন

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

7
এটি ক্রমাগত একটি ফাইল খোলে এবং বন্ধ করে দেয়। এই পদ্ধতির অদক্ষ হতে পারে।
22:44 এ mlt

56

একটি সাধারণ সম্পর্কে কি writeLines()?

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

অথবা

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

1
দেখিয়ে আনন্দিত যে ইনপুটটি লাইনের ভেক্টর হতে হবে না
টিম

1
@ অটিম আসলে "Hallo\nWorld"চরিত্রের ধরণের দৈর্ঘ্যের এক ভেক্টর। শুধু চেষ্টা করুনtxt <- "Hallo\nWorld"; is.character(txt) && length(txt) == 1 && is.vector(txt)
শূন্য 323

এটি কেবল আমার জন্য কাজ করে writeLines(txt, con="outfile.txt")
প্যালেক

নাহ, যতক্ষণ আপনি দ্বিতীয় যুক্তি হিসাবে কোনও বৈধ ফাইলের নাম দেন ততক্ষণ আর্গুমেন্টের নামকরণ ছাড়াই কাজ করা উচিত।
পিটারমিইসনার

@ পিটারমেসনার> coefficients<-summary(model) > writeLines(coefficients, "coefficients") Error in writeLines(coefficients, "coefficients") : invalid 'text' argument
আলহালাল

17

আপনি একক বিবৃতিতে এটি করতে পারে

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

13

আমার পরামর্শ:

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.


3

আর-তে কোনও ফাইলের পাঠ্যগুলির লাইন লেখার সংক্ষিপ্ত উপায়গুলি বিড়াল বা রাইটলাইন দ্বারা উপলব্ধ করা যেতে পারে যেমন ইতিমধ্যে অনেক উত্তরে দেখানো হয়েছে। সংক্ষিপ্ত সম্ভাবনার কয়েকটি হতে পারে:

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 ফাইল কি জন্য ঘটনা না শেষে বিড়াল । এই আচরণটি সামঞ্জস্য করতে পারে:

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

তবে প্রধান পার্থক্য হ'ল বিড়াল আর অবজেক্টগুলি ব্যবহার করে এবং যুক্তি হিসাবে একটি অক্ষর ভেক্টরকে রাইনলাইন করে । সুতরাং লেখার জন্য উদাহরণস্বরূপ 1:10 নম্বরের লিখনের জন্য কাস্ট করা দরকার যখন এটি বিড়াল হিসাবে রয়েছে তেমন ব্যবহার করা যেতে পারে:

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

2

বৃত্তাকার আউট সম্ভাবনার, আপনি ব্যবহার করতে পারেন 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

সেরা উত্তরের ভিত্তিতে :

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

নোট করুন যে yourObjectস্ট্রিং ফর্ম্যাটে থাকা দরকার; as.character()আপনার প্রয়োজন হলে রূপান্তর করতে ব্যবহার করুন ।

তবে এটি সংরক্ষণের প্রতিটি চেষ্টাতে খুব বেশি টাইপ করা । আসুন আরস্টুডিওতে একটি স্নিপেট তৈরি করুন।

গ্লোবাল বিকল্পসমূহ >> কোড >> স্নিপেটে, এটি টাইপ করুন:

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

তারপরে কোডিংয়ের সময় টাইপ করে wfileটিপুনTab


file <- file(...)লাইন আমার কাছে সন্দেহজনক মনে হচ্ছে। এটি উভয়ই fileকোনও ফাংশন হিসাবে প্রার্থনা এবং fileএকটি নতুন অর্থ নির্ধারণ করে না ? file()এই টুকরা কোড চালানোর পরেও কি কাজ করে? এই মুহুর্তে নিজেকে পরীক্ষা করার জন্য কোনও আর ইনস্টলেশনের অ্যাক্সেস রাখবেন না ...
প্যালেক

এটি আমার সেটআপ @ প্লেকে কাজ করেছে আপনি ফাইল ফাইল পরিবর্তন করতে পারবেন আপনার যদি সংরক্ষিত শব্দের সাথে কিছু সমস্যা থাকে
লুইস মার্টিনস

1

কুরুচিপূর্ণ সিস্টেম বিকল্প

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

কি সরল 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 এ সারি এবং কলামের নামগুলি বাদ দেওয়ার বিষয়টি নিশ্চিত করুন এবং পরামিতিটি txt quote = FALSEএর প্রতিটি লাইনের শুরু এবং শেষে সেই উদ্ধৃতি চিহ্নগুলি বাদ দেয়। আবার ডেটা পড়তে, আপনি ব্যবহার করতে পারেন text = readLines("output.txt")


0

আর এর নতুন সংস্করণগুলিতে, 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)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.