Uzman R kullanıcıları .Rprofile dosyasında neler var? [kapalı]


271

Diğer kişilerin başlangıç ​​profil dosyalarını her zaman dil hakkında yararlı ve öğretici buldum. Dahası, Bash ve Vim için bazı kişiselleştirmelerim olsa da, R için hiçbir şeyim yok.

Örneğin, her zaman istediğim bir şey, bir pencere terminalindeki giriş ve çıkış metni için farklı renkler ve hatta sözdizimi vurgulamasıdır.


29
Maalesef soru kapalı, ancak doğru cevabın "hiçbir şey" olduğunu kesinlikle düşünüyorum. .Rprofile kullanmak yerine, bir başlatma komut dosyasını projenizdeki her komut dosyasının başlangıcında çağıran her projenin en üst düzeyinde tutmanızı öneririm. Bu, kaynak kontrolü ile çalışmanızı diğer kullanıcılar arasında tekrarlanabilir tutar. Ancak, burada bazı parlak cevaplar var! Bu fikirlerden bazılarını kendi başlatma komut dosyalarına yazacağım.
geneorama

18
@geneorama - İyi yorum ama cevabınızı biraz nitelendiririm: .RprofileSonuçları değiştiren herhangi bir kod içermemelidir. Ekleyebileceğiniz şey, R (örn. options("width"=160)) Veya varsayılan CRAN aynasının (ör. options(repos = c(CRAN = "http://cran.rstudio.com"))) Görünümünü değiştiren şeylerdir . Bununla birlikte, paketleri yüklemeyin, düzenli olarak kullanılan işlevlerin varsayılan seçeneklerini değiştirmeyin, işlevi tanımlayın vb. Kodunuz müstakil olmalı ve sonuçları özel .Rprofiledosyanız olmadan yeniden oluşturmamalıdır .
user2503795

@geneorama, o zaman özel fonksiyonları nereye koymalıyım? Belki ayrı bir pakette / ad alanında? İçinde kolay / mümkün .Rprofilemü?
Aaron McDaid

2
@ aaron-mcdaid İlk @ user2503795 kesinlikle doğru, .Rprofileuygulama değişiklikleri yapmak için uygun bir yer. İkincisi, sorunuz ayrı bir SO sorusu olmalıdır. Gıda teftiş projemizde yaptıklarımıza benzer bir desen kullanmaya çalışıyorum (kod düzenine ve her komut dosyasının üstündeki başlatma adımlarına bakın).
geneorama

Yanıtlar:


96

İşte benim. Renklendirmede size yardımcı olmayacak ama bunu ESS ve Emacs'tan alıyorum ...

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

Emin değilim, ama şimdi X11.options'ın windows.options ile değiştirildiğini düşünüyorum. Bu doğru mu?
Manuel Ramón

Oluşturmak rve sonra rm-ing yapmak yerine, bunu bir local({ })bloğun içine koyabilirsiniz . İyi cevap olsa da, X11 yapılandırmasını seviyorum!
Aaron McDaid

Evet, local({ ... })gösterildiği gibi help(Startup)genellikle bu günlerde yaptığım şey Rprofile.site. Bir süredir X11 kesmek
zorunda kalmadım

59
options(stringsAsFactors=FALSE)

Aslında benim .Rprofile sahip olmasa da, benim ortak yazarların kodunu kırabilir çünkü, varsayılan olsaydı. Neden?

1) Karakter vektörleri daha az bellek kullanır (ancak zar zor);

2) Daha da önemlisi, aşağıdaki gibi problemlerden kaçınırız:

> 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"

ve

> 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

İhtiyacınız olduğunda faktörler mükemmeldir (örneğin, siparişleri grafiklerde uygulamak), ancak çoğu zaman bir sıkıntı.


Eduardo - İlginç, faktör kullanmamanın avantajları nelerdir?
medriscoll

28
+1 Keşke bu R'de varsayılan değer olsaydı.
Iterator

5
Karakter vektörlerinin 32 bit sistemlerde yalnızca daha az bellek (iki yüz bayt kadar) kullandığını unutmayın. 64 bit sistemlerde faktörler önemli ölçüde daha az kullanılır. stat.ethz.ch/pipermail/r-help/2012-Ağustos/321919.html
Ari B. Friedman

+1 Faktörlerle ilgili bazı önemli sorunlara dikkat çektiğiniz için teşekkür ederiz. SAS'ın format sisteminin buna göre birçok avantajı var, imo. Metinden okurken, stringsAsFactors her zaman false olarak ayarlanır. Ancak, veri aktarımı için mümkün olduğunca elektronik tablodan okumaktan kaçınırım.
AdamO

58

Her seferinde 'kafa', 'özet', 'isimler' kelimelerini yazmaktan nefret ediyorum, bu yüzden takma adları kullanıyorum.

.Rprofile dosyanıza takma adlar koyabilirsiniz, ancak işlevin tam yolunu (ör. Utils :: head) kullanmanız gerekir, aksi takdirde çalışmaz.

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

EDIT: sorunuza cevap vermek için , terminalde farklı renklere sahip olmak için colorout paketini kullanabilirsiniz . Güzel! :-)


8
Bence nhata ayıklama sırasında beni kişisel olarak arkada ısırır.
Roman Luštrik

2
Etkileşimli R kullanımı için iyi, ancak bunlar taşınabilir değil - bunları (yazılı) kodunuza koymayın!
Vince

25
Global ortamınızdaki tüm nesneleri sildiyseniz yukarıdaki takma adlar da silinecektir. Bunları bir ortamda saklayarak bunu önleyebilirsiniz. .startup <- new.env() assign("h", utils::head, env=.startup) assign("n", base::names, env=.startup) assign("ht", function(d) rbind(head(d,6),tail(d,6)) , env=.startup) assign("s", base::summary, env=.startup) attach(.startup)
Kevin Wright

12
Bu harika fikri denedim ama zaten kullandım sum <- base::summary. O değildi böyle harika bir fikir.
Tom

1
re colorout: "" "Bu paket arşivlendi: CRAN politikaları tarafından izin verilmeyen API dışı giriş noktaları kullanıldı." ""
izomorphismes

26

Benimki burada. Her zaman ana vinç deposunu kullanıyorum ve geliştirme paketi kodunu kolaylaştırmak için kodum var.

.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"))  
}

26

R komut geçmişimi kaydetmeyi ve her R çalıştırdığımda kullanılabilir olmasını seviyorum:

Kabuk veya .bashrc'de:

export R_HISTFILE=~/.Rhistory

.Profil:

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

23

İşte pencerelerle çalışmak için kullanışlı bulduğum iki işlev.

Birincisi \s'yi dönüştürür /.

.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')
 }

İkincisi çalışma dizinini yeni bir kaşif penceresinde açar.

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

2
Bu .repathedilir böylece benim .Rprofile biniyorlar.
Waldir Leoncio

1
Bu özelliği içeren bir RStudio eklentisi yazdım . Sadece yolu kopyalayın, RStudio'dan bir menüyü tıklayın ve dönüştürülen yol imleç konumunuza eklenecektir. Bu, bazı tuş vuruşlarını kaydetmelidir.
dracodoc

1
SOOO windows yolu sorunu çok nefret ediyorum. Bence daha iyi bir çözümüm olabilir. Bir pasaj ekledim. tek yapmam gereken wpp yazıp sekmeye basmak ve kopyaladığım yolun görünmesi. İşte kod. snippet wpp `r paste("\"", gsub("\\\\", "/", readClipboard()), "\"", sep = "")`
jamesguy0121

18

COLUMNS ortam değişkeninden (Linux'ta) okumaya çalışan tam terminal genişliğini kullanmak için bu, daha dinamik bir numara var:

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)}
)

Bu şekilde R, terminal pencerenizi yeniden boyutlandırsanız bile tam genişliği kullanır.


1
Ne zaman COLUMNSayarlı değil, deneyebileceğiniz width = as.integer(system('tput cols',intern=TRUE)bir dayanak olmak üzere.
shabbychef

17

Kişisel işlevlerimin ve yüklenen kitaplıkların çoğu Rfunctions.r komut dosyasında

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, ben bir R GUI "Arrr" adlandırmayı düşündüm - bu biraz piratey iyilik eklemek için çok daha kolay bir yoludur.
Sharpie

2
Ah teşekkürler. R'yi ateşlerken korsan düşünen tek kişi olmadığımı bilmek güzel. :-) Yemin ederim ki bu günlerden birini aşacağım.
ars

1
@Dirk'in senaryosunda neden kancasını ayarladığını açıklıyor ...
James

1
"Avast Ye" standart olmayan bir Korsan . Korsanımın standartlara uymasını tercih ederim. Ayrıca, bu "sıkı tutun" anlamına gelir, bu yüzden başlangıçta daha anlamlı olmaz mıydı? : P
naught101

2
Aslında sonunda mükemmel bir anlam ifade ediyor. R alanından çıktıktan sonra etrafındaki daha az ortama geri dönüyoruz ve yine e-tablolar ve geçici metin dosyalarıyla ilgilenmeliyiz.
kpierce8

17

İşte benim geliyor ~ / .Rprofile Mac ve Linux için tasarlanmış.

Bunlar hataları görmeyi kolaylaştırır.

options(showWarnCalls=T, showErrorCalls=T)

CRAN menü seçiminden nefret ediyorum, bu yüzden iyi bir tanesine ayarlayın.

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

Daha fazla tarih!

Sys.setenv(R_HISTSIZE='100000')

Aşağıdaki Mac OSX terminalden çalıştırmak için (ki ben daha istikrarlı çünkü R.app tercih ederim, ve dizine göre çalışmanızı organize edebilirsiniz; ayrıca iyi bir ~ / .inputrc aldığınızdan emin olun ). Varsayılan olarak, hoş görünmeyen bir X11 ekran alırsınız; bunun yerine GUI ile aynı bir kuvars ekran verir. ifİfadesi Mac üzerinde terminalden R çalıştırdığıomızda durumda yakalamak gerekiyordu.

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)

Ve birkaç kütüphaneyi önceden yükleyin,

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

burada util.r akı altında kullandığım rastgele bir çanta.

Ayrıca, diğer insanlar konsol genişliğinden bahsettiğinden, bunu nasıl yapacağım.

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)

Bu aslında değil .Rprofileçünkü terminal penceresini her yeniden boyutlandırdığınızda yeniden çalıştırmanız gerekiyor. İçinde var o util.rzaman sadece gerektiği gibi kaynak.


R'yi xterm penceresinde açarsam ("R" yazarak) R gui benzeri bir pencere açmalı mı? Bu .Rprofile ana dizinime ekleyerek herhangi bir fark söyleyemem.
Richard Herron

Hayýr. Bunun yaptýđý her ţeyi konsolda tutuyor. Ancak, bir şeyleri çizdiğinizde, varsayılan X11 görüntü cihazından daha akıllı bir görüntü cihazı kullanır.
Brendan OConnor

Bu pencere yeniden boyutlandırma komut dosyaları yararlı bir paket olabilir gibi hissediyorum. Katılıyor musun?
izomorfizmalar

16

İşte benim:

.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
kurumunuzun proxy'sinin adresini herkese açık bir web sitesine göndermemelisiniz.
dalloliogm

13
dalloliogm, bu özel (genel olmayan) bir ip adresidir. Dünyanın her yerinde aynı ip adresine sahip yüz binlerce bilgisayar var. Hangisinin benim olduğunu bulmaya çalışırken iyi şanslar!
Alfred J Fazio

2
alfred, .sprofile (burada yaptığınız gibi) işlevlerini bir başlangıç ​​'.' Ben ls () tanımladığım işlevlerden çok fazla dağınıklık var. Teşekkürler
Keith

4
@ Onları bir ortama atayın ve ortamı arama yoluna ekleyin, ardından temizleyin. İşlevler ayrı bir dosyadaysa, doğrudan ortama kaynak oluşturabilirsiniz. Bkz ?new.env, ?assignve ?sys.source. Eğer işe yaramazsanız, SO'ya yeni bir Q gönderin ve Cevaplar alacağınızdan eminim.
Gavin Simpson

Sizin my.as.Dateyerini olabilir Lubridatepakette. Haklı mıyım?
isomorphismes

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

Sık sık aramam gereken bir hata ayıklama zincirim var ve onları rahatsız etmek çok sıkıcı olabilir. SO topluluğunun yardımıyla , aşağıdaki çözüm için gittim ve bunu kendime ekledim .Rprofile.site. # BROWSERGörev Görünümü penceresinde tarayıcı çağrılarına genel bir bakış için Eclipse Görevlerim için orada.

# 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

9

Benimki çok süslü değil:

# 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' )

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)

MySQL veritabanlarından çok iş yapıyorum, bu yüzden hemen bağlantı kurmak bir nimettir. Keşke tüm avaialble veritabanlarını listelemenin bir yolu olsaydı, bu yüzden tüm farklı isimleri hatırlamak zorunda kalmam.


4
silly me dbGetQuery (con, "show veritabanları;")
Brandon Bertelsen

8

Stephen Turner'ın .Rprofiles'daki yazısında birkaç yararlı takma ad ve başlangıç ​​işlevi vardır.

Kendimi ht ve hh'yi sık sık kullanıyorum.

#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]

BurStMisc adında corner, hhişlevinizle aynı ve biraz daha fazlasını yapan bir işlev içeren bir paket var . ;)
Waldir Leoncio

7

Bahsedilen bazı fikirler dahil benim.

Bakmak isteyebileceğiniz iki şey:

  • .set.width () / w () yazdırma genişliğinizi terminalden birine güncelleyin. Ne yazık ki terminal yeniden boyutlandırmada bunu otomatik olarak yapmanın bir yolunu bulamadım - R belgelerinde bazı R tercümanları tarafından yapıldığı belirtiliyor.
  • geçmiş her zaman damgası ve çalışma dizini ile birlikte kaydedilir

.

.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"))
   }
}

7

RStudio'da "PDF Derle" düğmesiyle çalışmak için cacheSweave (veya pgfSweave) almak için aşağıdakileri kullanıyorum:

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


7

Benimki burada. Çok yenilikçi bir şey yok. Neden belirli seçimler üzerine düşünceler:

  • Ben stringsAsFactorsher zaman bir CSV okuduğumda bir argüman olarak geçmek için son derece drenaj bulmak için bir varsayılan belirleme ile gitti . Yani, bir bilgisayarda normal bilgisayarımda yazılı kod kullanırken zaten bazı küçük sıkıntı neden oldu benim .Rprofile sahip değildi. Yine de saklıyorum, çünkü neden olduğu sıkıntılar, her gün neden olduğu gibi ayarlamamış sorunlara kıyasla solgun.
  • utilsPaketi daha önce yüklemezseniz, options(error=recover)bir interactive()bloğun içine yerleştirildiğinde kurtarma bulamaz .
  • .dbDropbox ayarı için kullandım options(dropbox=...)çünkü her zaman içeride kullanıyorum file.pathve çok fazla tasarruf sağlıyor. Önde gelen .ile görünmesini engeller ls().

Daha fazla uzatmadan:

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)
    }
}

7

İşte için tabloları ihraç kullanım için biraz parçacık İşte LaTeX . Yazdığım birçok rapor için tüm sütun adlarını matematik moduna değiştirir. .Rprofile'mın geri kalanı oldukça standarttır ve çoğunlukla yukarıda kaplıdır.

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

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

5

Kafes renk temamı profilimde belirledim. İşte kullandığım diğer iki ince ayar:

# 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
Bu setwddeğiştirme sürümde daha iyi çalışacaktır:utils::assignInNamespace("setwd",function(dir) {on.exit(setWindowTitle(base::getwd())); .Internal(setwd(dir))}, "base")
Marek

5

Paketlerimin üst dizinine işaret eden bir ortam değişkeni R_USER_WORKSPACE var. .Rprofile dosyasında çalışma dizinini ayarlayan (veri () çalışacak şekilde) ve R alt dizinindeki tüm .R dosyalarını kaynaklayan bir işlev devlib tanımlarım. Yukarıdaki Hadley'in l () işlevine oldukça benzer.

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")

5

İki işlevi gerçekten gerekli buldum: İlk debug()olarak birkaç işlevi ayarladığımda ve hatayı çözdüğümde, undebug()tüm işlevleri tek tek değil istiyorum . undebug_all()Kabul cevap olarak eklenen fonksiyon burada en iyisidir.

İkincisi, birçok işlev tanımladığımda ve belirli bir değişken adı aradığımda ls(), işlev adları da dahil olmak üzere tüm sonuçlarında bulmak zor . lsnofun()Yayınlanan fonksiyon burada gerçekten iyidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.