2012-08-28 7 views
10

Sto creando una connessione file tramite path <- file("C:/test.txt") e quando si stampa l'oggetto associato alla connessione posso vedere "attributi" della connessione:Accedere gli attributi di una connessione file creato tramite file()

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

Tuttavia, non riesco a capire come in realtà accesso valorizza i vari attributi

Ecco quello che ho provato finora:

> 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 

Qualche idea?

+0

Quali sono gli attributi a cui si desidera accedere? – Pop

+0

* Gli attributi * probabilmente non sono il termine corretto, ma intendo semplicemente le cose che vedo quando stampo l'oggetto collegato alla connessione: "descrizione", "modalità", "aperto" ecc. – Rappster

risposta

11

Una rapida occhiata a base:::print.connection mostrerà che si desidera 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

E io di 1 minuto :) Lasciando rispondi comunque, poiché il mio frammento di codice mostra come ottenere un "attributo". – neilfws

+0

Duh, incredibile che non abbia pensato al buon vecchio "summary()". Grazie uomo! – Rappster

+0

@Rappster - Sono stato sorpreso di vederlo anche io. (L'ho trovato digitando 'class (path)', quindi cercando 'getAnywhere (" print.file ")', quindi 'getAnywhere (" print.connection ")'.) –

1

Il più vicino che posso arrivare a ciò che si desidera è di usare sintesi(). Ad esempio:

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

L'errore utilizzando file.info() è perché quella funzione prevede il percorso del file, cioè "C: /Test.txt", come argomento.

+0

Vado con Josh come è stato un po 'più veloce ;-) Comunque grazie per la risposta! – Rappster