مستخدمي الخبراء ص، ما في .rprofile الخاص بك؟ [مغلق
-
19-09-2019 - |
المحلول
تلك هي خاصتي. لن يساعدك في التلوين ولكني أحصل على ذلك من 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
نصائح أخرى
أنا أكره كتابة الكلمات الكاملة "الرأس"، "ملخص"، "أسماء" في كل مرة، لذلك يمكنني استخدام الأسماء المستعارة.
يمكنك وضع الأسماء المستعارة في ملف .rprofile الخاص بك، ولكن عليك استخدام المسار الكامل إلى الوظيفة (مثل Utils :: Head) وإلا فلن يعمل ذلك.
# aliases
s <- base::summary
h <- utils::head
n <- base::names
تحرير: للإجابة على سؤالك، يمكنك استخدام تلوين حزمة للحصول على ألوان مختلفة في المحطة. بارد! :-)
options(stringsAsFactors=FALSE)
على الرغم من أنني لا أمتلك في الواقع في بلدي .rprofile، لأنه قد يكسر رمز CoAuthors الخاص بي، أتمنى لو كان الافتراضي. لماذا ا؟
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
العوامل رائعة عندما تحتاج إليها (مثل تنفيذ الطلب في الرسوم البيانية) ولكن الإزعاج معظم الوقت.
هنا لي الألغام. أنا دائما استخدام مستودع المحرز الرئيسي، ولديك رمز لجعل من السهل على رمز حزمة حزمة في التنمية.
.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"))
}
أحب حفظ تاريخ أمري الخاص بي ووجودها متوفرة في كل مرة أركض فيها R:
في قذيفة أو .bashrc:
export R_HISTFILE=~/.Rhistory
في .rprofile:
.Last <- function() {
if (!any(commandArgs()=='--no-readline') && interactive()){
require(utils)
try(savehistory(Sys.getenv("R_HISTFILE")))
}
}
فيما يلي وظيفتان أجده مفيدا للعمل مع Windows.
الأول يحول \
ب /
.
.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')
}
يفتح الثاني دليل العمل في نافذة مستكشف جديدة.
getw <- function() {
suppressWarnings(shell(paste("explorer", gsub('/', '\\\\', getwd()))))
}
لدي هذا، خدعة أكثر ديناميكية لاستخدام عرض المحطة الكاملة، والتي تحاول أن تقرأ من متغير بيئة الأعمدة (على 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 العرض الكامل حتى أثناء تغيير حجم نافذة المحطة الطرفية.
معظم وظائفي الشخصية والمكتبات المحملة موجودة في البرنامج النصي
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")')
هنا من بلدي ~ / .rprofile., مصممة لنظام التشغيل Mac و Linux.
هذه تجعل الأخطاء أسهل لرؤية.
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، والتي لا تبدو لطيفة؛ هذا بدلا من ذلك يعطي شاشة الكوارتز نفس واجهة المستخدم الرسومية. ال if
من المفترض أن يصاب البيان بالقضية عند تشغيل 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
ثم أنا فقط مصدرها حسب الضرورة.
هنا لي:
.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))
}
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
}
اجعل البيانات. أعرض الإضراب مثل "الرأس"، فقط دون الحاجة إلى كتابة "الرأس"
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)
}
}
غالبا ما يكون لدي سلسلة من مكالمات تصحيح الأخطاء التي أحتاج إلى الاتصال بها ويمكن أن تكون ممتعة للغاية. بمساعدة حتى المجتمع, ذهبت للحل التالي وأدرج هذا في بلدي .Rprofile.site
. # BROWSER
هل هناك لمهام الكسوف الخاصة بي بحيث لدي نظرة عامة على مكالمات المتصفح في نافذة عرض المهام.
# 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
الألغام ليست خيالية جدا:
# 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' )
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، لذا فإن الاتصال على الفور هو إلهة. أتمنى أن تكون هناك طريقة لإدراج قواعد بيانات Avaialble حتى ألا يجب أن أتذكر كل الأسماء المختلفة.
وظيفة ستيفن تيرنر على .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]
هنا لي، بما في ذلك بعض الأفكار المذكورة.
شيئين قد ترغب في إلقاء نظرة عليه:
- .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"))
}
}
يمكنني استخدام ما يلي للحصول على CachesWeave (أو pgfsweave) للعمل مع زر "Compile PDF" في RSTudio:
library(cacheSweave)
assignInNamespace("RweaveLatex", cacheSweave::cacheSweaveDriver, "utils")
الألغام تشمل options(menu.graphics=FALSE)
لانني احب ان تعطيل / Suppress TCLTK المنبثقة للاختيار مرآة كران في ص.
هنا لي الألغام. لا شيء مبتكر للغاية. الأفكار حول لماذا خيارات معينة:
- ذهبت مع وضع الافتراضي ل
stringsAsFactors
لأنني أجد أنه يستنزف للغاية لتمريرها كحجة في كل مرة أقرأ فيها CSV. مما قال، فقد تسبب لي بالفعل بعض الغضب البسيط عند استخدام التعليمات البرمجية المكتوبة على جهاز الكمبيوتر المعتاد على جهاز كمبيوتر لم يكن لديك .rprofile. أنا أبقيها، على الرغم من أن المشاكل التي تسببت فيها شاحبة بالمشاكل التي لا تملكها كل يوم تستخدم للتسبب. - إذا كنت لا تحميل
utils
حزمة قبلoptions(error=recover)
, ، لا يمكن العثور على التعافي عند وضعها داخلinteractive()
منع. - انا إستعملت
.db
لإعداد بلدي dropbox بدلا من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)
}
}
إليك مقتطف صغير لاستخدام طاولات تصدير إلى اللاتكس. وبعد إنه يغير جميع أسماء الأعمدة إلى وضع الرياضيات للتقارير العديدة التي أكتبها. ما تبقى من بلدي .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
}
أقوم بتعيين موضوع لون شعرية في ملف التعريف الخاص بي. فيما يلي قرصان آخران أستخدمه:
# 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)
لدي بيئة متغير r_user_workspace التي تشير إلى أعلى الدليل في حزم بلدي. في .rprofile، أعرف وظيفة devlib التي تحدد دليل العمل (بحيث تعمل البيانات ()) ومصادر جميع ملفات .r في الدليل الفرعي ص. انها تشبه تماما وظيفة L () L () Hadley أعلاه.
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")
لقد وجدت وظيفتان ضرورية حقا: أولا عندما قمت بتعيين debug()
في العديد من الوظائف وحلبت الخطأ، لذلك أريد undebug()
جميع الوظائف - وليس واحدا تلو الآخر. ال undebug_all()
إضافة وظيفة كإجابة مقبولة هنا هو الأفضل.
ثانيا، عندما حددت العديد من الوظائف وأبحث عن اسم متغير معين، من الصعب العثور عليه في جميع نتائج ls()
, ، بما في ذلك أسماء الوظائف. ال lsnofun()
وظيفة نشر هنا هو جيد حقا.