人们用什么技巧来管理交互式R会话的可用内存?我使用下面的函数[根据Petr Pikal和David Hinds在2004年的r-help列表中的帖子]列出(和/或排序)最大的对象,偶尔列出rm()其中的一些.但到目前为止,最有效的解决方案是在具有充足内存的64位Linux下运行.
人们想分享其他任何好玩的伎俩吗?请发一个帖子.
# improved list of objects
.ls.objects <- function (pos = 1, pattern, order.by,
decreasing=FALSE, head=FALSE, n=5) {
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)
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, …Run Code Online (Sandbox Code Playgroud) 如何在R中永久设置特定的CRAN镜像?
我想在我的笔记本电脑中永久设置它,这样当我这样做时install.packages(),它不会再问我哪个镜子可供选择.
当我退出交互式R shell时,每次都会显示一个恼人的提示:
> > Save workspace image? [y/n/c]: n
我总是回答"不",因为如果我想保存我的工作,我会在尝试退出之前这样做.
如何摆脱提示?
注意:见 ?save.image
我想知道是否有办法在R命令行中显示当前时间,就像在MS DOS中一样,我们可以使用
Prompt $T $P$G
Run Code Online (Sandbox Code Playgroud)
在每个提示行中包含时钟.就像是
options(prompt=paste(format(Sys.time(), "%H:%M:%S"),"> "))
Run Code Online (Sandbox Code Playgroud)
会这样做,但它会在它设置时固定.我不确定如何让它自动更新.
我有几个自定义函数,我经常在R中使用.而不是在每个脚本中使用这个文件(或其中的部分),是否有一些方法可以将它添加到基本R文件中,这样当我使用R时它们总是可用的?
我的问题类似于之前发布的问题,但从未真正回答过:
我不喜欢用于CRAN镜像选择的R tcltk弹出窗口.当他们在两个包中搜索函数的帮助时,他们还会弹出选择包.
有没有办法在不完全禁用X11的情况下禁用这些窗口?我仍然希望plot()命令正常工作,但禁用永远加载远程连接的小选择菜单.
例如,如果您使用ssh,但不使用-X,那么镜像选择只是R中的文本,您键入一个数字.它很快.这就是我想要的,但保留X11的情节b.
任何人都知道如何维护图形窗口,但禁用"选择"tcltk窗口?
考虑我们已经调用debug()了几个函数来对它们进行断点.当我们找到并解决这个bug时,是否还有一个命令undebug()标记的所有函数debug()?
这是一个很好的基准,看看你提出的方法是否真的完美:
> library(limma) # bioconductor
> debug(read.ilmn)
> read.ilmn("a.txt") # No problem if this file does not exist
Browse[2]> debug(.read.oneilmnfile) # This is the debug browser for read.ilmn()
Browse[2]> Q # To exit debug browser
> undebug.all() # Here run your proposed function to undebug everything!
> read.ilmn("a.txt")
# Now if the debug browser is not started, you are lucky to pass this test!
Run Code Online (Sandbox Code Playgroud)
您可能会在下面看到接受的答案.任何情况下,这个答案不起作用,或更干净的版本是非常受欢迎的.
我有一个Macintosh,我试图自动加载包,自制函数,并在每次启动R时使用修改后的设置.我相信这可以通过一个名为Rprofile.site的文件来完成,并通过创建函数.First和.Last在那个文件中.
一个问题是,我不知道我的R_HOME目录是什么,它用于什么,或者它是否存在.我找到了两个功能,我认为它们都给了我它的位置,但我得到了不同的结果.
这是第一个
> Sys.getenv("R_home")
R_home
""
Run Code Online (Sandbox Code Playgroud)
第二个
> R.home()
[1] "/Library/Frameworks/R.framework/Resources"
Run Code Online (Sandbox Code Playgroud)
据我所知,我的机器上甚至不存在第二个目录.我目前正在从我的应用程序目录运行R.
从数据框中删除多个元素的最佳方法是什么?在我的情况下,我在数据框架中拥有该月的所有日期,并且想要删除几天.像下面这样的东西可以运行一天.
m[m$date!="01/31/11",]
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试类似的东西
m[m$date!=c("01/31/11","01/30/11"),]
Run Code Online (Sandbox Code Playgroud)
我收到一条警告信息
Warning message:
In `!=.default`(m$date, c("01/31/11", "01/30/11")) :
longer object length is not a multiple of shorter object length
Calls: [ ... [.data.frame -> Ops.dates -> NextMethod -> Ops.times -> NextMethod
Run Code Online (Sandbox Code Playgroud)
它似乎工作了两天,但如果我将01/29/11添加到矢量它显示所有日子,但是01/31/11.
我正在导入一个名为"KernSmooth"的软件包,并希望启动消息不显示...
在我的描述文件中:
Package: test
Title: Test
Author: Mike
Description: Test
Maintainer: Mike
Depends: R(>= 2.10.0)
Imports: KernSmooth
Run Code Online (Sandbox Code Playgroud)
和我的命名空间文件:
import(KernSmooth)
Run Code Online (Sandbox Code Playgroud)
但是当我加载包时,我仍然得到启动消息:
KernSmooth 2.23 loaded
Copyright M. P. Wand 1997-2009
Run Code Online (Sandbox Code Playgroud)
我唯一的选择是不要在NAMESPACE中导入它并使用它
suppressMessages(require(KernSmooth))
Run Code Online (Sandbox Code Playgroud)
在我的R函数内避免消息?