2012-08-28 89 views
10

我創建通過path <- file("C:/test.txt")文件連接並打印相關的連接對象時,我可以看到連接的「屬性」通過文件創建的文件連接的屬性:訪問()

> path 
    description   class   mode   text  opened 
"C:/test.txt"  "file"   "r"  "text"  "closed" 
    can read  can write 
     "yes"   "yes" 

不過,我似乎弄清楚不能如何實際訪問的各種屬性值

這裏是我試過到目前爲止:

> attributes(path) 
$class 
[1] "file"  "connection" 

$conn_id 
<pointer: 0x0000004b> 

> path$description 
Error in path$description : $ operator is invalid for atomic vectors 

> path["description"] 
[1] NA 

> file.info(path) 
Error in file.info(path) : invalid filename argument 

任何想法?

+0

你想訪問什麼屬性? – Pop

+0

*屬性*可能不是正確的術語,但我只是指打印附加到連接的對象時看到的內容:「description」,「mode」,「opened」等。 – Rappster

回答

11

快速查看base:::print.connection將顯示您需要summary(path)

summary(path) 
$description 
[1] "C:/test.txt" 

$class 
[1] "file" 

$mode 
[1] "r" 

$text 
[1] "text" 

$opened 
[1] "closed" 

$`can read` 
[1] "yes" 

$`can write` 
[1] "yes" 
+0

和我由1分鐘:)離開無論如何,因爲我的代碼片段顯示如何獲得「屬性」。 – neilfws

+0

Duh,令人難以置信的是我沒有想到好的總結()'。謝啦! – Rappster

+0

@Rappster - 我也很驚訝地看到這一點。 (我通過鍵入'class(path)'找到它,然後嘗試getAnywhere(「print.file」)',然後'getAnywhere(「print.connection」)'。) –

1

我能得到你想要的最接近的是使用摘要()。例如:

summary(path)$mode 
[1] "rt" 

使用file.info誤差()是因爲函數需要文件路徑,即 「C:/test.txt」,作爲其參數。

+0

我會和喬希一起去,因爲他快了一點;-)儘管如此,謝謝你的答案! – Rappster