2012-08-28 17 views
10

estoy creando una conexión de archivos a través path <- file("C:/test.txt") y al imprimir el objeto asociado a la conexión que puede ver "atributos" de la conexión:Acceso a los atributos de una conexión de archivo creado a través de archivo()

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

sin embargo, me parece que no puede encontrar la manera de realidad acceso valora los diversos atributos

Esto es lo que he intentado hasta ahora:

> 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 

¿Alguna idea?

+0

¿A qué atributos desea acceder? – Pop

+0

* Los atributos * probablemente no son el término correcto, pero simplemente me refiero a las cosas que veo al imprimir el objeto adjunto a la conexión: "descripción", "modo", "abierto", etc. – Rappster

Respuesta

11

Un vistazo rápido a base:::print.connection mostrará que quiere 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

y yo en 1 minuto :) responde de todos modos, ya que mi fragmento de código muestra cómo obtener un "atributo". – neilfws

+0

Duh, increíble que no pensé en el buen ol '' summary() '. ¡Gracias hombre! – Rappster

+0

@Rappster - Me sorprendió ver eso también. (Lo encontré escribiendo 'class (path)', luego probando 'getAnywhere (" print.file ")', then 'getAnywhere (" print.connection ")'.) –

1

Lo más cerca que puedo llegar a lo que desea es utilizar resumen(). Por ejemplo:

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

el error utilizando file.info() se debe a que la función espera que la ruta del archivo, es decir "C: /test.txt", como su argumento.

+0

Iré con Josh ya que ha sido un poco más rápido ;-) Sin embargo, ¡gracias por la respuesta! – Rappster

Cuestiones relacionadas