エキスパートRユーザー、.Rprofileには何がありますか?[閉まっている]


271

私はいつも他の人のスタートアッププロファイルファイルを見つけて、その言語について有益で有益な情報を見つけました。さらに、私はBashVimをカスタマイズしていますが、Rはカスタマイズしていません。

たとえば、私が常に望んでいたことの1つは、ウィンドウターミナルの入力テキストと出力テキストの色が異なることです。


29
残念ながら質問は締め切られましたが、正解は「何もない」と強く思います。.Rprofileを使用する代わりに、初期化スクリプトを、プロジェクト内のすべてのスクリプトの先頭で呼び出されるすべてのプロジェクトの最上位に保持することをお勧めします。これにより、ソース管理を介して他のユーザー間で作業を再現できるようになります。しかし、ここには素晴らしい答えがあります!私はこれらのアイデアのいくつかを自分の初期化スクリプトに入れます。
ジェネラマ2014年

18
@geneorama-良いコメントですが、私はあなたの答えを少し修飾します。これに.Rprofileは、結果を変更するコードを含めないでください。含めることができるのは、R(たとえばoptions("width"=160))またはデフォルトのCRANミラー(たとえばoptions(repos = c(CRAN = "http://cran.rstudio.com")))の外観を変更するものです。ただし、パッケージをロードしたり、定期的に使用される関数のデフォルトオプションを変更したり、関数を定義したりしないでください.Rprofile。コードは自己完結型で、特定のファイルなしで結果を再現する必要があります。
user2503795

@geneorama、カスタム関数はどこに置くべきですか?おそらく別のパッケージ/名前空間にありますか?それは簡単/可能.Rprofileですか?
Aaron McDaid、2015

2
@ aaron-mcdaid最初の@ user2503795は完全に正しく、.Rprofileアプリケーションの変更を行うのに適切な場所です。第二に、あなたの質問は別のSO質問でなければなりません。私は、食品検査プロジェクトで行ったのと同様のパターンを使用しようとします(各スクリプトの上部にあるコードレイアウトと初期化手順を参照してください)。
ジェネラマ2015

回答:


96

こちらが私のものです。着色には役立ちませんが、ESSと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

よくわかりませんが、X11.optionsがwindows.optionsに置き換えられたと思います。本当?
マヌエル・ラモン・

作成rrmてから実行する代わりに、それをlocal({ })ブロック内に置くことができます。良い答えですが、X11の設定が大好きです!
Aaron McDaid、2015

はい、にlocal({ ... })示されているhelp(Startup)は、私がで最近行っていることRprofile.siteです。しばらくの間X11ハックは必要ありませんでした:)
Dirk Eddelbuettel

59
options(stringsAsFactors=FALSE)

実際には.Rprofileにはありませんが、共著者のコードが壊れる可能性があるため、それがデフォルトであることを望みます。どうして?

1)文字ベクトルはより少ないメモリを使用します(しかし、かろうじてのみ)。

2)さらに重要なことに、次のような問題を回避します。

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

そして

> 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

ファクターは、必要な場合(たとえば、グラフでの順序付けの実装)に最適ですが、ほとんどの場合、煩わしいものです。


Eduardo-興味深いことに、要素を使用しないことの利点は何ですか?
medriscoll 2009

28
1私は、これはR.でデフォルトたことを望む
イテレータ

5
32ビットシステムでは、文字ベクトルのメモリ使用量が少ない(200バイト程度)ようです。64ビットシステムでは、使用する要素はかなり少なくなります。 stat.ethz.ch/pipermail/r-help/2012-August/321919.html
Ari B. Friedman、

+1要因に関するいくつかの主要な問題を指摘していただきありがとうございます。SASのフォーマットシステムには、imoよりも多くの利点があります。テキストから読み取る場合、stringsAsFactorsは常にfalseに設定されます。ただし、データ転送については、可能な限りスプレッドシートから読み取ることは避けています。
AdamO

58

「head」、「summary」、「names」という完全な単語を毎回入力するのは嫌なので、エイリアスを使用します。

.Rprofileファイルにエイリアスを入れることができますが、関数への絶対パス(utils :: headなど)を使用する必要があります。そうしないと機能しません。

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

編集:質問に答えるために、coloroutパッケージを使用して、ターミナルに異なる色を付けることができます。涼しい!:-)


8
nデバッグ中、私は個人的に後部に噛み付くと思います。
RomanLuštrik11年

2
インタラクティブなRでの使用には問題ありませんが、移植性はありません。それらを(記述された)コードに含めないでください。
ヴィンス

25
グローバル環境のすべてのオブジェクトを削除すると、上記のエイリアスも削除されます。環境でこれらを非表示にすることでそれを防ぐことができます。 .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
私はこの素晴らしいアイデアを試しましたが、すでにsを使用していたので、使用しましたsum <- base::summary。それはそれほど素晴らしい考えではありませんでした
トム

1
re colorout: "" "このパッケージはアーカイブされました:CRANポリシーで許可されていない非APIエントリポイントを使用しました。" ""
同形

26

こちらが私のものです。私は常にメインのクランリポジトリを使用しており、開発中のパッケージコードを簡単に入手できるコードを用意しています。

.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コマンド履歴を保存し、Rを実行するたびに使用できるようにするのが好きです。

シェルまたは.bashrcで:

export R_HISTFILE=~/.Rhistory

.Rprofile内:

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

23

ここでは、ウィンドウの操作に便利な2つの関数を示します。

1つ目は、\sをに変換し/ます。

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

2つ目は、新しいエクスプローラウィンドウで作業ディレクトリを開きます。

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

2
これが.repathあるので、私の.Rprofileに入ります。
Waldir Leoncio

1
私が書いたRStudioアドインこの機能が含まれています。パスをコピーし、RStudioからメニューをクリックすると、変換されたパスがカーソルの場所に挿入されます。これにより、いくつかのキーストロークが保存されます。
dracodoc 2017年

1
私はウィンドウズパスの問題をとても嫌いです。私はもっ​​と良い解決策があるかもしれないと思います。スニペットを追加しました。だから私がしなければならないすべてはwppをタイプしてからタブを押すだけです、そしてコピーしたパスが表示されます。これがコードです。 snippet wpp `r paste("\"", gsub("\\\\", "/", readClipboard()), "\"", sep = "")`
jamesguy0121

18

私はこれを持っています、全ターミナル幅を使用するより動的なトリックがあり、COLUMNS環境変数(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)}
)

このように、ターミナルウィンドウのサイズを変更しても、Rは全幅を使用します。


1
COLUMNSが設定されていない場合はwidth = as.integer(system('tput cols',intern=TRUE)、バックストップとして試すことができます。
shabbychef

17

私の個人的な関数とロードされたライブラリのほとんどは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
えっと、私はR GUIに「Arrr」という名前を付けることを考えました。これは、海賊の良さを追加するはるかに簡単な方法です。
シャーピー

2
あ、ありがとう。Rを起動するときに海賊と思うのは私だけではないことを知っておくのは良いことです。
ars

1
@Dirkがスクリプトにフックを設定した理由を説明しています...
James

1
「Avast Ye」は非標準の海賊です。私は海賊が基準に準拠することを好みます。また、〜「しっかりホールド」という意味なので、最初はもっと理にかなってませんか?:P
naught101 '21 / 06/21

2
実際には、最後にそれは完全に理にかなっています。rドメインを終了すると、その周辺のより小さな環境に戻り、スプレッドシートとアドホックテキストファイルを再び処理する必要があります。
kpierce8

17

これは、MacおよびLinux用に設計された私の〜/ .Rprofileからの抜粋です。

これらにより、エラーが見やすくなります。

options(showWarnCalls=T, showErrorCalls=T)

私はCRANメニューの選択が嫌いなので、良いものに設定します。

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

もっと歴史!

Sys.setenv(R_HISTSIZE='100000')

以下は、ターミナルからMac OSXで実行するためのものです(安定性が高く、作業をディレクトリごとに整理できるため、R.appよりも好みます。また、適切な〜/ .inputrcを取得してください)。デフォルトでは、X11ディスプレイが表示されますが、見た目は良くありません。代わりに、GUIと同じクオーツディスプレイが表示されます。のifステートメントは、MacのターミナルからRを実行しているときにケースをキャッチするものと想定されています。

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)

いくつかのライブラリをプリロードし、

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

どこ util.rはフラックスの下で使用するランダムなバッグです。

また、他の人がコンソール幅について言及していたので、ここに私がそれをする方法があります。

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)

.Rprofileターミナルウィンドウのサイズを変更するたびに再実行する必要があるため、これは実際にはありません。私はそれを持っているutil.rので、必要に応じてそれを調達します。


(「R」と入力して)xtermウィンドウでRを開く場合、R guiのようなウィンドウを開く必要がありますか?この.Rprofileをホームディレクトリに追加しても違いはわかりません。
Richard Herron、2010

いいえ、これが行うことは、すべてをコンソールに保持することです。ただし、プロットするときは、デフォルトのX11ディスプレイデバイスよりもスマートなディスプレイデバイスを使用します。
ブレンダンOConnor 2010

これらのウィンドウのサイズを変更するスクリプトは、パッケージにすると便利だと思います。同意しますか?
同型写像

16

こちらが私のものです:

.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
機関の代理人のアドレスを公開Webサイトに投稿しないでください。
dalloliogm 2010年

13
dalloliogm、これはプライベート(非パブリック)IPアドレスです。このまったく同じIPアドレスを持つコンピューターは世界中に何十万台も存在します。どれが私のものかを見つけようとして頑張ってください!
Alfred J Fazio

2
alfred、あなたはls()を実行するときに、最初の '。'で名前を付けることを除いて、それらを表示せずに.Rprofileで関数を定義する方法を見つけましたか?ls()のときに定義した関数が多すぎます。ありがとう
Keith

4
@Keithはそれらを環境に割り当て、その環境を検索パスにアタッチして、クリーンアップします。関数が別のファイルにある場合は、環境に直接ソースを提供できます。参照してください?new.env?assign?sys.source。それが機能しない場合は、SOに新しいQを投稿してください。回答が得られると思います。
Gavin Simpson

あなたmy.as.DateLubridateパッケージに取って代わられるかもしれません。私は正しいですか?
同型写像

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

呼び出す必要がある一連のデバッグ呼び出しがあり、それらのコメントを外すのは非常に退屈な作業です。SOコミュニティの助けを借りて、私は次の解決策を探し、これを私のに挿入しました.Rprofile.site# BROWSERタスクビューウィンドウにブラウザー呼び出しの概要を表示できるように、Eclipseタスク用にあります。

# 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

鉱山は派手すぎない:

# 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データベースから多くの作業を行うので、すぐに接続することは天の恵みです。利用可能なデータベースを一覧表示する方法があればいいので、さまざまな名前をすべて覚える必要はありません。


4
愚かな私dbGetQuery(con、 "show databases;")
Brandon Bertelsen

8

スティーブン・ターナーの投稿.Rprofilesに関するには、いくつかの便利なエイリアスとスターター関数があります。

私は彼のhtとhhを頻繁に使用しています。

#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と呼ばれるパッケージがありcornerますhh関数と関数ともう少し多くの。;)
Waldir Leoncio

7

ここに、言及されたアイデアのいくつかを含む私のものがあります。

あなたが見たいと思うかもしれない2つのこと:

  • .set.width()/ w()は、印刷幅を端末の幅に更新します。残念ながら、ターミナルのサイズ変更でこれを自動的に行う方法は見つかりませんでした-Rのドキュメントには、これが一部のRインタープリターによって行われていると記載されています。
  • 履歴はタイムスタンプと作業ディレクトリとともに毎回保存されます

.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

以下を使用して、cacheSweave(またはpgfSweave)がRStudioの[PDFのコンパイル]ボタンを操作できるようにします。

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


7

こちらが私のものです。革新的なものはありません。特定の選択肢を選ぶ理由:

  • 私はデフォルトを設定しました stringsAsFactorsCSVを読み込むたびに引数として渡すのは非常に面倒なのでました。私の.Rprofileがありませんでした。ただ、普段の設定では起こらなかったトラブルと比べると、色褪せてしまったトラブルとして残しています。
  • あなたがロードしない場合 utils以前options(error=recover)にパッケージを、interactive()ブロック内に配置してもリカバリーを見つけることができません。
  • .dbはいつもoptions(dropbox=...)それを内部で使用するのではなく、自分のドロップボックス設定に使用しましたfile.path、それは多くのタイピングを節約できます。リーディング.は、と一緒に表示されないようにしls()ます。

難しい話は抜きにして:

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

これは、テーブルをLaTeXにエクスポートするための小さなスニペットです。私が書いた多くのレポートのすべての列名を数学モードに変更します。私の.Rprofileの残りの部分はかなり標準的で、ほとんどが上記でカバーされています。

# 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

自分のラティスカラーテーマをプロファイルに設定しました。次に、私が使用する他の2つの調整を示します。

# 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
このsetwd交換は、バージョンに良く動作します:utils::assignInNamespace("setwd",function(dir) {on.exit(setWindowTitle(base::getwd())); .Internal(setwd(dir))}, "base")
マレク

5

私のパッケージのトップディレクトリを指す環境変数R_USER_WORKSPACEがあります。.Rprofileでは、(data()が機能するように)作業ディレクトリを設定し、Rサブディレクトリ内のすべての.Rファイルをソースする関数devlibを定義しています。これは、上記のHadleyのl()関数によく似ています。

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

2つの機能が本当に必要であることがわかりました。最初debug()にいくつかの機能を設定し、バグを解決したのでundebug()、1つずつではなくすべての機能を使用します。のundebug_all()された回答として追加された機能、ここが最適です。

第2に、多くの関数を定義して特定の変数名を探している場合ls()、関数名を含むのすべての結果内でそれを見つけるのは困難です。lsnofun()投稿機能ここでは本当に良いです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.