file()
çağrısı tarafından döndürülen nesneyi kaydetmenin bir yolu, tüm bağlantıları kapatmamanız gerektiğinden yalnızca işlevinizin açılmasını sağlar.
R> cat("foobar\n", file = "foo.txt")
R> con <- file("foo.txt")
R> out <- readLines(con)
R> out
[1] "foobar"
R> close(con)
ancak, muhtemelen biraz farklı bir yol alacaktı, işlevinizi yazmak için:: İşte fikir göstermek için olmayan bir fonksiyon versiyonu
getCommentary <- function(filepath) {
con <- file(filepath)
on.exit(close(con))
Commentary <-readLines(con)
Commentary
}
ile, aşağıdaki şekilde hangisi kullanılır örnek dosyası olarak yukarıda oluşturulan metin dosyası fonksiyonu sona ererse w için, bu yüzden bir kere con
oluşturulur on.exit()
kullanılan
R> getCommentary("foo.txt")
[1] "foobar"
okuma Nefret nedeni, bağlantı kapatılacak. bağlantı kapatıldı olmaz bu yüzden, sadece son satırı, ör .:
Commentary <-readLines(con)
close(con)
Commentary
}
fonksiyon readLines()
çağrı başarısız ve sonlandırmak edemeden sadece close(con)
açıklamaya bu bırakıldığında. on.exit()
, işlev sonlandırılsa bile bağlantının kapatılmasını ayarlayacaktır.
Veya dosyayı kullanmayın. Oku satırları bir yolla çalışır. – hadley
@ hadley'ın yorumu bilgedir (şaşırtıcı değil): Kendileriyle başa çıkmak için bağlantıları yönetmek için iyi yapılandırılmış temel davranışı tercih edin. Bunu söyledikten sonra, bu akıllıca tavsiyenin geçerli olmadığı genel durum için, 'on.exit' örneğinin yukarıdaki cevabına oy verdim. –
@MattTenenbaum: Eğer bir dosyayı "var1 <- readLines" ("filename.txt", = "UTF-8") 'yi kullanarak açabilirsem. Onu kapatmak zorunda değil miyim? – discipulus