2009-07-27 3 views
246

Siempre he encontrado que los archivos de perfil de inicio de otras personas son útiles e instructivos sobre el idioma. Además, aunque tengo algunas personalizaciones para Bash y Vim, no tengo nada para R.Usuarios de Expertos R, ¿qué hay en su .Rprofile?

Por ejemplo, una cosa que siempre quise es colores diferentes para texto de entrada y salida en un terminal de ventana, y tal vez incluso resaltado de sintaxis.

+18

Lamentablemente, la pregunta está cerrada, pero creo firmemente que la respuesta correcta es "nada". En lugar de usar .Rprofile, sugiero mantener un script de inicialización en el nivel superior de cada proyecto que lo invoque al comienzo de cada script en su proyecto. Eso mantiene su trabajo reproducible en otros usuarios a través del control de fuente. ¡Pero, hay algunas respuestas brillantes aquí! Pondré algunas de estas ideas en mis propios guiones de inicialización. – geneorama

+11

@geneorama - Buen comentario, pero calificaría su respuesta un poco: el '.Rprofile' no debe incluir ningún código que cambie los resultados. Lo que puede incluir es material que cambia la apariencia de R (por ejemplo, 'options (" width "= 160)') o el espejo CRAN predeterminado (por ejemplo 'options (repos = c (CRAN =" http: //cran.rstudio. com "))'). Sin embargo, no cargue paquetes, cambie las opciones predeterminadas de las funciones usadas regularmente, defina funciones, etc. Su código debe ser independiente y reproducir los resultados sin su archivo '.Rprofile' en particular. – user2503795

+0

@geneorama, ¿dónde debería poner funciones personalizadas entonces? ¿Quizás en un paquete/espacio de nombres separado? ¿Es eso fácil/posible dentro de '.Rprofile'? –

Respuesta

86

Aquí está el mío. No te va a ayudar con la coloración pero me da que a partir de ESS y Emacs ...

options("width"=160)    # wide display with multiple monitors 
options("digits.secs"=3)   # show sub-second time stamps 

r <- getOption("repos")    # hard code the US repo for CRAN 
r["CRAN"] <- "http://cran.us.r-project.org" 
options(repos = r) 
rm(r) 

## put something this is your .Rprofile to customize the defaults 
setHook(packageEvent("grDevices", "onLoad"), 
     function(...) grDevices::X11.options(width=8, height=8, 
              xpos=0, pointsize=10, 
              #type="nbcairo")) # Cairo device 
              #type="cairo")) # other Cairo dev 
              type="xlib"))  # old default 

## from the AER book by Zeileis and Kleiber 
options(prompt="R> ", digits=4, show.signif.stars=FALSE) 


options("pdfviewer"="okular")   # on Linux, use okular as the pdf viewer 
+0

No estoy seguro, pero creo que ahora X11.options ha sido reemplazado por windows.options. ¿Es eso cierto? –

+0

En lugar de crear 'r' y luego' rm'-ing, puede colocarlo dentro de un bloque 'local ({})'. Buena respuesta, ¡me encanta la configuración de X11! –

+0

Sí, el 'local ({...})' como se muestra en 'help (Startup)' es lo que suelo hacer estos días en 'Rprofile.site'. No he necesitado el hack X11 en un momento :) –

17

La mayor parte de mis funciones personales y bibliotecas cargadas están en el guión Rfunctions.r

source("c:\\data\\rprojects\\functions\\Rfunctions.r") 


.First <- function(){ 
    cat("\n Rrrr! The statistics program for Pirates !\n\n") 

    } 

    .Last <- function(){ 
    cat("\n Rrrr! Avast Ye, YO HO!\n\n") 

    } 


#=============================================================== 
# Tinn-R: necessary packages 
#=============================================================== 
library(utils) 
necessary = c('svIDE', 'svIO', 'svSocket', 'R2HTML') 
if(!all(necessary %in% installed.packages()[, 'Package'])) 
    install.packages(c('SciViews', 'R2HTML'), dep = T) 

options(IDE = 'C:/Tinn-R/bin/Tinn-R.exe') 
options(use.DDE = T) 

library(svIDE) 
library(svIO) 
library(svSocket) 
library(R2HTML) 
guiDDEInstall() 
shell(paste("mkdir C:\\data\\rplots\\plottemp", gsub('-','',Sys.Date()), sep="")) 
pldir <- paste("C:\\data\\rplots\\plottemp", gsub('-','',Sys.Date()), sep="") 

plot.str <-c('savePlot(paste(pldir,script,"\\BeachSurveyFreq.pdf",sep=""),type="pdf")') 
+1

Heh, pensé en nombrar una R GUI "Arrr" - esta es una forma mucho más fácil de agregar algo de bondad pirata. – Sharpie

+2

Ah, gracias. Es bueno saber que no soy el único que piensa en pirata al disparar R. :-) Juro que lo superaré uno de estos días. – ars

+1

Explica por qué @Dirk estaba estableciendo su gancho en su script ... – James

24

Aquí es mía. Siempre uso el repositorio principal de cran y tengo un código para facilitar la fuente del código del paquete de desarrollo.

.First <- function() { 
    library(graphics) 
    options("repos" = c(CRAN = "http://cran.r-project.org/")) 
    options("device" = "quartz") 
} 

packages <- list(
    "describedisplay" = "~/ggobi/describedisplay", 
    "linval" = "~/ggobi/linval", 

    "ggplot2" = "~/documents/ggplot/ggplot", 
    "qtpaint" = "~/documents/cranvas/qtpaint", 
    "tourr" = "~/documents/tour/tourr", 
    "tourrgui" = "~/documents/tour/tourr-gui", 
    "prodplot" = "~/documents/categorical-grammar" 
) 

l <- function(pkg) { 
    pkg <- tolower(deparse(substitute(pkg))) 
    if (is.null(packages[[pkg]])) { 
    path <- file.path("~/documents", pkg, pkg) 
    } else { 
    path <- packages[pkg] 
    } 

    source(file.path(path, "load.r")) 
} 

test <- function(path) { 
    path <- deparse(substitute(path)) 
    source(file.path("~/documents", path, path, "test.r")) 
} 
9

La mía no es demasiado elegante:

# So the mac gui can find latex 
Sys.setenv("PATH" = paste(Sys.getenv("PATH"),"/usr/texbin",sep=":")) 

#Use last(x) instead of x[length(x)], works on matrices too 
last <- function(x) { tail(x, n = 1) } 

#For tikzDevice caching 
options(tikzMetricsDictionary='/Users/cameron/.tikzMetricsDictionary') 
5

puse mi tema del enrejado del color en mi perfil. Aquí hay otros dos ajustes que utilizo:

# Display working directory in the titlebar 
# Note: This causes demo(graphics) to fail 
utils::setWindowTitle(base::getwd()) 
utils::assignInNamespace("setwd",function(dir) {.Internal(setwd(dir));setWindowTitle(base::getwd())},"base") 

# Don't print more than 1000 lines 
options(max.print=2000) 
+1

Este reemplazo 'setwd' funcionará mejor en la versión:' utils :: assignInNamespace ("setwd", function (dir) {on.exit (setWindowTitle (base :: getwd())); .Internal (setwd (dir)) }, "base") ' – Marek

16

aquí es de mi ~/.Rprofile, diseñado para Mac y Linux.

Esto hace que los errores sean más fáciles de ver.

options(showWarnCalls=T, showErrorCalls=T) 

Odio la opción de menú CRAN, por lo tanto, establezca una buena opción.

options(repos=c("http://cran.cnr.Berkeley.edu","http://cran.stat.ucla.edu")) 

¡Más historia!

Sys.setenv(R_HISTSIZE='100000') 

La siguiente es para ejecutar en Mac OS X desde el terminal (que yo prefiero mucho R.app porque es más estable, y se puede organizar su trabajo por el directorio; también asegurarse de obtener un buen ~/.inputrc) . Por defecto, obtienes una pantalla X11, que no se ve tan bien; esto en cambio da una pantalla de cuarzo igual que la GUI. Se supone que la declaración if capta el caso cuando estás ejecutando R desde la terminal en Mac.

f = pipe("uname") 
if (.Platform$GUI == "X11" && readLines(f)=="Darwin") { 
    # http://www.rforge.net/CarbonEL/ 
    library("grDevices") 
    library("CarbonEL") 
    options(device='quartz') 
    Sys.unsetenv("DISPLAY") 
} 
close(f); rm(f) 

y precarga de algunas bibliotecas,

library(plyr) 
library(stringr) 
library(RColorBrewer) 
if (file.exists("~/util.r")) { 
    source("~/util.r") 
} 

donde util.r es una bolsa de cosas al azar que uso, bajo flujo.

Además, como otras personas mencionaron el ancho de la consola, así es como lo hago.

if ((numcol <-Sys.getenv("COLUMNS")) != "") { 
    numcol = as.integer(numcol) 
    options(width= numcol - 1) 
} else if (system("stty -a &>/dev/null") == 0) { 
    # mac specific? probably bad in the R GUI too. 
    numcol = as.integer(sub(".* ([0-9]+) column.*", "\\1", system("stty -a", intern=T)[1])) 
    if (numcol > 0) 
    options(width= numcol - 1) 
} 
rm(numcol) 

En realidad, esto no es en .Rprofile porque hay que volver a ejecutar cada vez que se cambia el tamaño de la ventana de terminal. Lo tengo en util.r y luego solo lo fuente según sea necesario.

+0

Si abro R en una ventana de xterm (escribiendo" R ") ¿debería abrir una ventana tipo R gui? No puedo ver ninguna diferencia agregando este .Rprofile a mi directorio de inicio. –

+0

No. Lo que hace es mantener todo dentro de la consola. Sin embargo, cuando tramas cosas, utiliza un dispositivo de visualización más inteligente que el dispositivo de visualización X11 predeterminado. –

+0

Creo que estos scripts de cambio de tamaño de ventana podrían ser un paquete. ¿Estás de acuerdo? – isomorphismes

22

me gusta salvar mi historial de comandos R y tenerla disponible cada vez que funciono R:

En el shell o .bashrc:

export R_HISTFILE=~/.Rhistory 

en .Rprofile:

.Last <- function() { 
     if (!any(commandArgs()=='--no-readline') && interactive()){ 
       require(utils) 
       try(savehistory(Sys.getenv("R_HISTFILE"))) 
     } 
} 
54
options(stringsAsFactors=FALSE) 

Aunque en realidad no tengo eso en mi .Rprofile, porque podría romper el código de mis coautores, desearía que fuera el predeterminado. ¿Por qué?

1) Los vectores de caracteres utilizan menos memoria (pero apenas);

2) Más importante aún, queremos evitar problemas tales como:

> x <- factor(c("a","b","c")) 
> x 
[1] a b c 
Levels: a b c 
> x <- c(x, "d") 
> x 
[1] "1" "2" "3" "d" 

y

> x <- factor(c("a","b","c")) 
> x[1:2] <- c("c", "d") 
Warning message: 
In `[<-.factor`(`*tmp*`, 1:2, value = c("c", "d")) : 
    invalid factor level, NAs generated 

factores son grandes cuando los necesite (por ejemplo, la implementación de ordenación en los gráficos), pero una molestia mayor parte de el tiempo.

+0

Eduardo - Interesante, ¿cuáles son las ventajas de no usar factores? – medriscoll

+22

+1 Desearía que este fuera el valor predeterminado en R. – Iterator

+4

Tenga en cuenta que los vectores de caracteres solo parecen usar menos memoria (doscientos bytes más o menos) en sistemas de 32 bits. En los sistemas de 64 bits, los factores utilizan considerablemente menos. https://stat.ethz.ch/pipermail/r-help/2012-August/321919.html –

16

Éstos son los míos:

.First <- function() { 
    options(device="quartz") 
} 

.Last <- function() { 
    if (!any(commandArgs() == '--no-readline') && interactive()) { 
    require(utils) 
    try(savehistory(Sys.getenv("R_HISTFILE"))) 
    } 
} 

# Slightly more flexible than as.Date 
# my.as.Date("2009-01-01") == my.as.Date(2009, 1, 1) == as.Date("2009-01-01") 
my.as.Date <- function (a, b=NULL, c=NULL, ...) { 
    if (class(a) != "character") 
    return (as.Date(sprintf("%d-%02d-%02d", a, b, c))) 
    else 
    return (as.Date(a)) 
} 

# Some useful aliases 
cd <- setwd 
pwd <- getwd 
lss <- dir 
asd <- my.as.Date # examples: asd("2009-01-01") == asd(2009, 1, 1) == as.Date("2009-01-01") 
last <- function (x, n=1, ...) tail(x, n=n, ...) 

# Set proxy for all web requests 
Sys.setenv(http_proxy="http://192.168.0.200:80/") 

# Search RPATH for file <fn>. If found, return full path to it 
search.path <- function(fn, 
    paths = strsplit(chartr("\\", "/", Sys.getenv("RPATH")), split = 
       switch(.Platform$OS.type, windows = ";", ":"))[[1]]) { 
    for(d in paths) 
    if (file.exists(f <- file.path(d, fn))) 
     return(f) 
    return(NULL) 
} 

# If loading in an environment that doesn't respect my RPATH environment 
# variable, set it here 
if (Sys.getenv("RPATH") == "") { 
    Sys.setenv(RPATH=file.path(path.expand("~"), "Library", "R", "source")) 
} 

# Load commonly used functions 
if (interactive()) 
    source(search.path("afazio.r")) 

# If no R_HISTFILE environment variable, set default 
if (Sys.getenv("R_HISTFILE") == "") { 
    Sys.setenv(R_HISTFILE=file.path("~", ".Rhistory")) 
} 

# Override q() to not save by default. 
# Same as saying q("no") 
q <- function (save="no", ...) { 
    quit(save=save, ...) 
} 

# ---------- My Environments ---------- 
# 
# Rather than starting R from within different directories, I prefer to 
# switch my "environment" easily with these functions. An "environment" is 
# simply a directory that contains analysis of a particular topic. 
# Example usage: 
# > load.env("markets") # Load US equity markets analysis environment 
# > # ... edit some .r files in my environment 
# > reload()    # Re-source .r/.R files in my environment 
# 
# On next startup of R, I will automatically be placed into the last 
# environment I entered 

# My current environment 
.curr.env = NULL 

# File contains name of the last environment I entered 
.last.env.file = file.path(path.expand("~"), ".Rlastenv") 

# Parent directory where all of my "environment"s are contained 
.parent.env.dir = file.path(path.expand("~"), "Analysis") 

# Create parent directory if it doesn't already exist 
if (!file.exists(.parent.env.dir)) 
    dir.create(.parent.env.dir) 

load.env <- function (string, save=TRUE) { 
    # Load all .r/.R files in <.parent.env.dir>/<string>/ 
    cd(file.path(.parent.env.dir, string)) 
    for (file in lss()) { 
    if (substr(file, nchar(file)-1, nchar(file)+1) %in% c(".r", ".R")) 
     source(file) 
    } 
    .curr.env <<- string 
    # Save current environment name to file 
    if (save == TRUE) writeLines(.curr.env, .last.env.file) 
    # Let user know environment switch was successful 
    print (paste(" -- in ", string, " environment -- ")) 
} 

# "reload" current environment. 
reload <- resource <- function() { 
    if (!is.null(.curr.env)) 
    load.env(.curr.env, save=FALSE) 
    else 
    print (" -- not in environment -- ") 
} 

# On startup, go straight to the environment I was last working in 
if (interactive() && file.exists(.last.env.file)) { 
    load.env(readLines(.last.env.file)) 
} 
+1

no debe publicar la dirección del proxy de su institución en un sitio web público. – dalloliogm

+10

dalloliogm, esta es una dirección IP privada (no pública). Hay cientos de miles de computadoras en todo el mundo con esta misma dirección IP exacta. ¡Buena suerte tratando de descubrir cuál es el mío! –

+2

alfred, ¿ha encontrado una forma de definir funciones en .Rprofile (como lo ha hecho aquí) sin que aparezcan cuando hace un ls(), además de nombrar con un '.' Inicial? Tengo demasiado desorden de las funciones que definí cuando ls(). Gracias – Keith

56

odio a escribir las palabras completas 'cabeza', 'Resumen', 'nombres' cada vez, por lo que utilizar alias.

Puede poner alias en su archivo .Rprofile, pero debe usar la ruta completa a la función (por ejemplo, utils :: head) de lo contrario, no funcionará.

# aliases 
s <- base::summary 
h <- utils::head 
n <- base::names 

EDIT: para responder a su pregunta, puede utilizar el paquete colorout tener diferentes colores en el terminal. ¡Guay! :-)

+0

Me gusta eso. Esas son las tres funciones que utilizo todo el tiempo. –

+8

Creo que 'n' me mordería, personalmente, en la parte posterior mientras se depura. –

+2

Bien para uso interactivo de R, pero estos no son portátiles, ¡no los coloque en su código (escrito)! – Vince

18

Tengo esto, truco más dinámico de utilizar el ancho de terminal completo, que intenta leer la variable de entorno COLUMNAS (en Linux):

tryCatch(
    {options(
     width = as.integer(Sys.getenv("COLUMNS")))}, 
    error = function(err) { 
    write("Can't get your terminal width. Put ``export COLUMNS'' in your \ 
      .bashrc. Or something. Setting width to 120 chars", 
      stderr()); 
    options(width=120)} 
) 

De esta manera R utilizará el pleno ancho incluso cuando cambia el tamaño de la ventana de su terminal.

+1

Cuando' '' COLUMNS''' no está configurado, puede intentar '' 'width = as.integer (system ('tput cols', intern = TRUE)' '' como un backstop. – shabbychef

5

Tengo una variable de entorno R_USER_WORKSPACE que apunta al directorio superior de mis paquetes. En .Rprofile defino una función devlib que establece el directorio de trabajo (para que los datos() funcionen) y las fuentes de todos los archivos .R en el subdirectorio R. Es bastante similar a la función l() de Hadley anterior.

devlib <- function(pkg) { 
    setwd(file.path(Sys.getenv("R_USER_WORKSPACE", "."), deparse(substitute(pkg)), "dev")) 
    sapply(list.files("R", pattern=".r$", ignore.case=TRUE, full.names=TRUE), source) 
    invisible(NULL) 
} 

.First <- function() { 
    setwd(Sys.getenv("R_USER_WORKSPACE", ".")) 
    options("repos" = c(CRAN = "http://mirrors.softliste.de/cran/", CRANextra="http://www.stats.ox.ac.uk/pub/RWin")) 
} 

.Last <- function() update.packages(ask="graphics") 
8
setwd("C://path//to//my//prefered//working//directory") 
library("ggplot2") 
library("RMySQL") 
library("foreign") 
answer <- readline("What database would you like to connect to? ") 
con <- dbConnect(MySQL(),user="root",password="mypass", dbname=answer) 

que hacer mucho trabajo de bases de datos MySQL, por lo que la conexión de inmediato es un regalo del cielo. Ojalá hubiera una manera de listar las bases de datos disponibles para no tener que recordar todos los nombres diferentes.

+4

tonto me dbGetQuery (con, "show databases;") –

6

Aquí está el mío, incluidas algunas de las ideas mencionadas.

dos cosas que usted puede mirar:

  • .set.width()/w() actualizar el ancho de impresión a la una de la terminal.Lamentablemente, no encontré la manera de hacerlo automáticamente en el redimensionamiento del terminal: la documentación de R menciona que esto lo hacen algunos intérpretes de R.
  • historia se guarda cada vez que junto con una marca de tiempo y el directorio de trabajo

.

.set.width <- function() { 
    cols <- as.integer(Sys.getenv("COLUMNS")) 
    if (is.na(cols) || cols > 10000 || cols < 10) 
    options(width=100) 
    options(width=cols) 
} 

.First <- function() { 
    options(digits.secs=3)    # show sub-second time stamps 
    options(max.print=1000)    # do not print more than 1000 lines 
    options("report" = c(CRAN="http://cran.at.r-project.org")) 
    options(prompt="R> ", digits=4, show.signif.stars=FALSE) 
} 

# aliases 
w <- .set.width 

.Last <- function() { 
    if (!any(commandArgs()=='--no-readline') && interactive()){ 
    timestamp(,prefix=paste("##------ [",getwd(),"] ",sep="")) 
    try(savehistory("~/.Rhistory")) 
    } 
} 
11
sink(file = 'R.log', split=T) 

options(scipen=5) 

.ls.objects <- function (pos = 1, pattern, order.by = "Size", decreasing=TRUE, head =  TRUE, n = 10) { 
    # based on postings by Petr Pikal and David Hinds to the r-help list in 2004 
    # modified by: Dirk Eddelbuettel (http://stackoverflow.com/questions/1358003/tricks-to- manage-the-available-memory-in-an-r-session) 
    # I then gave it a few tweaks (show size as megabytes and use defaults that I like) 
    # a data frame of the objects and their associated storage needs. 
    napply <- function(names, fn) sapply(names, function(x) 
      fn(get(x, pos = pos))) 
    names <- ls(pos = pos, pattern = pattern) 
    obj.class <- napply(names, function(x) as.character(class(x))[1]) 
    obj.mode <- napply(names, mode) 
    obj.type <- ifelse(is.na(obj.class), obj.mode, obj.class) 
    obj.size <- napply(names, object.size)/10^6 # megabytes 
    obj.dim <- t(napply(names, function(x) 
      as.numeric(dim(x))[1:2])) 
    vec <- is.na(obj.dim)[, 1] & (obj.type != "function") 
    obj.dim[vec, 1] <- napply(names, length)[vec] 
    out <- data.frame(obj.type, obj.size, obj.dim) 
    names(out) <- c("Type", "Size", "Rows", "Columns") 
    out <- out[order(out[[order.by]], decreasing=decreasing), ] 
    if (head) 
    out <- head(out, n) 
    out 
} 
10

a menudo tienen una cadena de llamadas de depuración que necesito para llamar y eliminando el comentario de ellos puede ser muy tedioso. Con la ayuda de SO community, busqué la siguiente solución e inserté esto en mi .Rprofile.site. # BROWSER está ahí para mis tareas de Eclipse para que tenga una visión general de las llamadas del navegador en la ventana Vista de tareas.

# turn debugging on or off 
# place "browser(expr = isTRUE(getOption("debug"))) # BROWSER" in your function 
# and turn debugging on or off by bugon() or bugoff() 
bugon <- function() options("debug" = TRUE) 
bugoff <- function() options("debug" = FALSE) #pun intended 
7

utilizo el siguiente para obtener cacheSweave (o pgfSweave) para trabajar con el botón "Compilar PDF" en rstudio:

library(cacheSweave) 
assignInNamespace("RweaveLatex", cacheSweave::cacheSweaveDriver, "utils") 
8

Stephen Turner's post en .Rprofiles tiene varios alias útiles y funciones de inicio.

Me encuentro usando su ht y hh a menudo.

#ht==headtail, i.e., show the first and last 10 items of an object 
ht <- function(d) rbind(head(d,10),tail(d,10)) 

# Show the first 5 rows and first 5 columns of a data frame or matrix 
hh <- function(d) d[1:5,1:5] 
+0

Hay un paquete llamado [BurStMisc] (http://cran.r-project.org/web/packages/BurStMisc/index.html) que contiene una función llamada 'corner' que hace lo mismo que su función' hh' y un poco más.;) –

21

Aquí hay dos funciones que me resultan útiles para trabajar con Windows.

El primer convierte el \ s en /.

.repath <- function() { 
    cat('Paste windows file path and hit RETURN twice') 
    x <- scan(what = "") 
    xa <- gsub('\\\\', '/', x) 
    writeClipboard(paste(xa, collapse=" ")) 
    cat('Here\'s your de-windowsified path. (It\'s also on the clipboard.)\n', xa, '\n') 
} 

El segundo abre el directorio de trabajo en una nueva ventana del explorador.

getw <- function() { 
    suppressWarnings(shell(paste("explorer", gsub('/', '\\\\', getwd())))) 
} 
+2

This '.repath' es _so_ entrar en mi .Rprofile. –

+1

Escribí [un complemento de RStudio] (https://github.com/dracodoc/mischelper) que incluía esta característica. Simplemente copie la ruta, haga clic en un menú de RStudio y la ruta convertida se insertará en la ubicación de su cursor. Esto debería guardar algunas pulsaciones de teclas. – dracodoc

7

Aquí está el mío. Nada demasiado innovador. Pensamientos sobre por qué determinadas opciones:.

  • yo fuimos con el establecimiento de un valor predeterminado para stringsAsFactors porque encuentro extremadamente drenaje para pasarlo como un argumento cada vez que leo un CSV en Dicho esto, ya me ha causado una cierta vejación menor al usar código escrito en mi computadora habitual en una computadora que no tenía mi .Rprofile. Sin embargo, lo mantengo, ya que los problemas que ha causado son pálidos en comparación con los problemas que no se han establecido todos los días solía causar.
  • Si no carga el paquete utils antes de options(error=recover), no puede encontrar la recuperación cuando se coloca dentro de un bloque interactive().
  • Utilicé .db para mi configuración de Dropbox en lugar de options(dropbox=...) porque la uso todo el tiempo dentro de file.path y ahorra mucho tipeo. El . líder lo impide que aparezca con ls().

Sin más preámbulos:

if(interactive()) { 
    options(stringsAsFactors=FALSE) 
    options(max.print=50) 
    options(repos="http://cran.mirrors.hoobly.com") 
} 

.db <- "~/Dropbox" 
# `=` <- function(...) stop("Assignment by = disabled, use <- instead") 
options(BingMapsKey="blahblahblah") # Used by taRifx.geo::geocode() 

.First <- function() { 
    if(interactive()) { 
     require(functional) 
     require(taRifx) 
     require(taRifx.geo) 
     require(ggplot2) 
     require(foreign) 
     require(R.utils) 
     require(stringr) 
     require(reshape2) 
     require(devtools) 
     require(codetools) 
     require(testthat) 
     require(utils) 
     options(error=recover) 
    } 
} 
11

hacer que los datos.fotogramas muestran algo así como 'cabeza', sólo que sin tener que escribir 'cabeza'

print.data.frame <- function(df) { 
    if (nrow(df) > 10) { 
     base::print.data.frame(head(df, 5)) 
     cat("----\n") 
     base::print.data.frame(tail(df, 5)) 
    } else { 
     base::print.data.frame(df) 
    } 
} 

(De How to make 'head' be applied automatically to output?)

5

me encontré con dos funciones muy necesarias: en primer lugar, cuando he puesto debug() en varias funciones y tengo resolvió el error, así que quiero undebug() todas las funciones, no una por una. La función undebug_all() agregada como la respuesta aceptada here es la mejor.

En segundo lugar, cuando he definido muchas funciones y estoy buscando un nombre de variable específico, es difícil encontrarlo en todos los resultados del ls(), incluidos los nombres de las funciones. La función lsnofun() publicada here es realmente buena.

7

Aquí hay un pequeño fragmento para exportar tablas al LaTeX. Cambia todos los nombres de columna al modo matemático para los muchos informes que escribo. El resto de mi .Rprofile es bastante estándar y está cubierto en su mayoría arriba.

# Puts $dollar signs in front and behind all column names col_{sub} -> $col_{sub}$ 

amscols<-function(x){ 
    colnames(x) <- paste("$", colnames(x), "$", sep = "") 
    x 
} 
Cuestiones relacionadas