2011-07-11 7 views
8

No se pudo ver una solución en línea, pero pensé que esto podría ser bastante común.¿Siempre usas row.names = F en write.csv? Cambio de los valores predeterminados dentro de las funciones R (base)

Con write.csv, básicamente, siempre tengo el argumento row.name establecido en F. ¿Es posible ejecutar una línea una vez y actualizar el valor predeterminado del argumento para el resto de la sesión?

me trataron:

paste <- paste(sep="") 

que se desarrolló y devuelve ningún error, pero parecía no hacer nada (y no destruyó la función pegar). Esta es otra, siempre ajusto a "" con pegar, como siempre he tenido 'exclude = NULL' cuando estoy usando la tabla para poder ver los valores N/A.

EDITAR: Entonces, estoy buscando una solución que funcione para múltiples funciones si es posible, pegue, escriba.csv, mesa y otras funciones como estas.

Gracias

+0

Solo por mencionarlo, para el caso de 'paste', hay' paste0' donde 'sep =" "' de forma predeterminada. –

Respuesta

5

Prueba esto:

paste <- paste 
formals(paste)$sep <- "" 

Esto crea una nueva copia de paste en su espacio de trabajo, y luego modifica su valor por defecto para sep a "". Las llamadas subsiguientes al paste usarán la copia modificada, ya que se encuentra frente al entorno base en su ruta de búsqueda.

+0

Hmmm, esto funciona para pegar pero no write.csv o tabla. Tener una pregunta actualizada. – nzcoops

+1

@nzcoops Para 'table' es complicado (para ser claro para el conjunto' NULL' como valor predeterminado).Pruebe 'formals (tabla) [" exclude "] <- list (NULL)'. Y 'write.csv' es otra historia. Recomiendo mirar la fuente de 'write.csv' y' write.csv2' y tratar de escribir 'write.csv3' para satisfacer sus necesidades. – Marek

+1

Ver la fuente a 'write.csv' es probable que lo haga llorar – hadley

8

paste <- paste(sep="") pone la salida de paste() en un objeto llamado "pasta". Deberías hacer algo como esto en su lugar.

paste <- function (..., sep = "", collapse = NULL) { 
    base::paste(..., sep=sep, collapse=collapse) 
} 

También puede mirar en el paquete de Defaults para este tipo de cosas, pero no funciona actualmente para dos de sus ejemplos.

+1

Hmm, obtengo un 'Error: evaluación anidada muy profundamente:' error con 'setDefaults (pegar, sep =" ")'. Tendré que investigar eso ... –

+0

Sí, y lamentablemente la parte de la tabla tampoco funciona. De la ayuda para 'setDefaults' "Asignar NULL a cualquier argumento eliminará el argumento de la lista de valores predeterminados". – nzcoops

+2

Con respecto a la primera parte de su respuesta, ¿por qué hizo lo que hizo con el colapso? – nzcoops

Cuestiones relacionadas