首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有什么技巧可以通来来管理R会话中的可用内存?

有什么技巧可以通来来管理R会话中的可用内存?

提问于 2017-12-12 10:14:55
回答 2关注 0查看 327

人们使用什么技巧来管理交互式R会话的可用内存?我使用下面的函数(基于Petr Pikal和David Hinds在2004年的“帮助列表”中发布的帖子)来列出(和/或排序)最大的对象,偶尔会使用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, obj.size, obj.dim)

names(out) <- c("Type", "Size", "Rows", "Columns")

if (!missing(order.by))

out <- out[order(out[[order.by]], decreasing=decreasing), ]

if (head)

out <- head(out, n)

out

}

# shorthand

lsos <- function(..., n=10) {

.ls.objects(..., order.by="Size", decreasing=TRUE, head=TRUE, n=n)

}

回答 2

迷迭香

发布于 2017-12-12 10:17:52

43

投票

subset在将数据框传递给data=回归函数的参数时,我只会选择所需的变量来积极使用参数。如果我忘记向公式和select=矢量添加变量,会导致一些错误,但是由于减少了对象的复制,并且显着减少了内存占用,所以仍然节省了大量时间。假设我有400万条记录和110个变量(我也是这样)例如:

代码语言:txt
AI代码解释
复制
# library(rms); library(Hmisc) for the cph,and rcs functions
代码语言:txt
AI代码解释
复制
Mayo.PrCr.rbc.mdl <- 
代码语言:txt
AI代码解释
复制
cph(formula = Surv(surv.yr, death) ~ age + Sex + nsmkr + rcs(Mayo, 4) + 
代码语言:txt
AI代码解释
复制
                                     rcs(PrCr.rat, 3) +  rbc.cat * Sex, 
代码语言:txt
AI代码解释
复制
     data = subset(set1HLI,  gdlab2 & HIVfinal == "Negative", 
代码语言:txt
AI代码解释
复制
                           select = c("surv.yr", "death", "PrCr.rat", "Mayo", 
代码语言:txt
AI代码解释
复制
                                      "age", "Sex", "nsmkr", "rbc.cat")
代码语言:txt
AI代码解释
复制
   )            )

通过设置上下文和策略的方式:gdlab2变量是一个逻辑向量,是为一组数据集中的受试者构建的,该变量对于一系列实验室测试具有所有正常或几乎正常的值,并且HIVfinal是一个总结艾滋病初步和确认性测试的特征向量。

不知雨

发布于 2017-12-12 10:16:59

确保您以可重复的脚本记录您的工作。不时地重新打开R,然后是source()你的脚本。你将清理掉不再使用的任何东西,并且作为附加的好处将会测试你的代码。

和开发者交流更多问题细节吧,去 写回答
相关文章
还有什么可以通证化?
数字计算机能够处理的一切对象,都必须先通过编码(coding)进行数字化(digitalization)。“数字化”不是很准确的中文翻译,一个外行如果将它翻译回英文的时候,可能会变成“numberization”。在海峡对岸将 digitalization 翻译成为“数码化”,我个人以为是更好的翻译。
孟岩
2021/11/30
5050
R中的小技巧
1.str() 在很多语言里可以将其他类型转化为字符串,不过在R中会返回数据类型。
生信编程日常
2020/04/01
1.5K0
会话管理
Http协议是无状态协议,Web服务器没有短期记忆。在有些应用场景(例如:购物车)下,需要跨越多个请求识别同一个客户——客户跟踪,在Web应用中使用Cookie和Session可以做到这一点。
阿杜
2018/08/06
1.5K0
会话管理
java中的适配器是什么及有什么作用(通熟易懂)
这样,再用到这个接口时,可以直接继承适配器, 这样就不需要把接口中的每一个方法再填充一遍了,只需要在这个类中复写一下需要用的方法。 这样简单,方便。
全栈程序员站长
2022/09/06
6670
python中的ideavim有什么作用_IdeaVim插件施用技巧
IdeaVim插件使用技巧在 IDEA Intellij小技巧和插件 一文中简单介绍了一下IdeaVim插件。在这里详细总结一下这个插件在日常编程中的一些常用小技巧。供有兴趣使用这个插件,但对Vim还不十分熟悉的朋友参考。当然基本的hjkl移动光标和几种常见模式等等基本概念就略过不提了。为了确保只包含常用操作,这里提到的技巧都没有从现成文档里抄,而是凭记忆列出(不常用自然就不记得了)。估计会有所遗漏,慢慢再补充。1. 切换Vim模拟器状态这个插件允许设置一个快捷键一键开启或关闭,在切换模式时会同时自动切换keymap,十分方便。默认键位是Ctrl+Alt+V,但这个键位覆盖了很常用的“抽取局部变量”功能,建议重设,在setting->keymap中查找VIM Emulator即可。由于开启和关闭状态分别使用两套keymap,因此两套都需要设定。可以把两套keymap下的都设为一样的键,也就是用同一个键切换。但个人建议设为不同的键,这样能清楚知道当前处于那种模式中。并且,如果在开启Vim的插入模式下关闭Vim模拟器,下次进入时仍然是插入模式,比较混乱(因为你关闭模拟器就是为了使用默认keymap输入大段代码,重新开启Vim模拟器就是为了使用普通模式下的命令)。因此建议把Vim keymap中的Exit Insert Mode设为与另一个keymap的Vim Emulator相同的键(也就是进入Vim模拟器的快捷键)。例如,我使用的设定是:Default keymap -> Vim Emulator : Ctrl+;     (用Ctrl+分号开启Vim模拟器)Vim keymap -> Vim Emulator : Ctrl+,    (用Ctrl+逗号关闭Vim模拟器)Vim keymap -> Vim Emulator : Ctrl+;    (用Ctrl+分号退出插入模式,进入普通模式)这样,在任何时候只要连按两下ctrl+分号,就能保证必定在Vim模拟器的普通模式中。2. ScrollOff 参数启动Intellij后在Vim模拟器下输入命令 :set so=5 可以令屏幕滚动时在光标上下方保留5行预览代码(也就是光标会在第5行触发向上滚动,或者在倒数第5行触发向下滚动)。在代码窗口比较狭小时(例如单步跟踪调试时)非常方便。可惜仅在Vim模拟器开启时有效。3. 行号定位普通模式下输入 行号G 或 :行号 都能快速定位到某一行。区别在于前者在输入行号时屏幕上没有任何提示,后者则在Vim命令输入框中可以看到输入过程。(题外话:Sublime Text 2也是用 :行号 来快速定位到某行,应该是沿用了Vim的习惯)4. 进入修改进入插入模式的方式有很多,直接选用合适的方式进入插入模式比进入后再用箭头键移动光标要好。常用的有:o – 在当前行下方插入新行并自动缩进O – 在当前行上方插入新行并自动缩进 (普通模式下的大写字母命令用 shift+字母键 输入,下同)i – 在当前字符左方开始插入字符a – 在当前字符右方开始插入字符I – 光标移动到行首并进入插入模式A – 光标移动到行尾并进入插入模式s – 删除光标所在字符并进入插入模式S – 删除光标所在行并进入插入模式c – 删除光标所在位置周围某个范围的文本并进入插入模式。关于范围请看第5点,常用的组合有:caw – 删除一个单词包括它后面的空格并开始插入; ciw – 删除一个单词并开始插入; ci” – 删除一个字符串内部文本并开始插入; c$ – 从光标位置删除到行尾并开始插入; ct字符 – 从光标位置删除本行某个字符之前(保留该字符)并开始插入。等等。C – 删除光标位置到行尾的内容并进入插入模式 (相当于c$)r – 修改光标所在字符,然后返回普通模式R – 进入覆盖模式5. 范围操作某些普通模式的动作命令后面可以追加一些表示范围的指令,表示该动作将作用在整个范围上。这类命令常用的有:d – 删除一定范围内的文本c – 删除一定范围内的文本并进入插入模式y – 将范围内的文本放入0号和”号注册栏v – 选择范围内的文本= – 自动缩进范围内的文本gU – 将范围内的字符转换为大写gu – 将范围内的字符转换为小写> – 将范围中的内容缩进一格< – 将范围中的内容取消缩进一格常用的范围指令有:空格 – 光标所在位置字符。(例如 gU空格 – 将光标位置字符转为大写)重复某些动作命令 – 光标所在行。 (例如dd删除一行,yy复制一行,cc删除一行文本并开始插入,>> 当前行缩进一格,==自动缩进当前行)$ – 从光标位置到行尾^ – 从光标位置到行首,不包含缩进空白0 – 从光标位置到行首,包含缩进空白gg – 从光标位置到文件开头G – 从光标位置到文件结尾% – 从光标位置到另一边匹配的括号f – 从光标位置到光标右边某个字符首次出现的位置,包括该字
全栈程序员站长
2022/11/10
1.6K0
快速学习Shiro-Shiro中的会话管理
在shiro里所有的用户的会话信息都会由Shiro来进行控制,shiro提供的会话可以用于JavaSE/JavaEE环境,不依赖于任何底层容器,可以独立使用,是完整的会话模块。通过Shiro的会话管理器(SessionManager)进行统一的会话管理
cwl_java
2020/01/02
1K0
session会话管理
session会话和cookie一起被称为会话跟踪技术,主要通过保存在服务器端的session数据和客户端浏览器的cookie数据共同完成用户访问服务器的足迹记录。
周小董
2019/03/25
1.5K0
听说你Go语言学的不错,来来来,我这儿有几道小题
在主函数中,把 hello 函数赋值给了变量 h。在条件判断中,h != nil,所以会打印,not nil。
程序员小助手
2020/04/26
3910
web会话管理的方式
http是无状态的,一次请求结束,连接断开,下次服务器再收到请求,它就不知道这个请求是哪个用户发过来的。当然它知道是哪个客户端地址发过来的,但是对于我们的应用来说,我们是靠用户来管理,而不是靠客户端。所以对我们的应用而言,它是需要有状态管理的,以便服务端能够准确的知道http请求是哪个用户发起的,从而判断他是否有权限继续这个请求。这个过程就是常说的会话管理。它也可以简单理解为一个用户从登录到退出应用的一段期间。本文总结了3种常见的实现web应用会话管理的方式:
用户9076598
2022/03/02
6690
2.react心智模型(来来来,让大脑有react思维吧)
​ 视频课程的目的是为了快速掌握react源码运行的过程和react中的scheduler、reconciler、renderer、fiber等,并且详细debug源码和分析,过程更清晰。
zz1998
2021/12/09
7700
shiro——会话管理
Shiro提供SessionDAO用于会话的CRUD,即DAO(Data Access Object)模式实现。
用户10196776
2022/11/22
1.1K0
shiro——会话管理
BI软件中的管理驾驶舱是什么?有什么特点?
随着企业的不断发展壮大,以及数字化的快速发展,企业经营所产生的数据越来越多,越来越趋向于实时,海量的数据给企业带来了一个问题:管理者该如何运用这些数据掌握企业动态,做出及时关键的决策?
数据前沿
2020/09/24
1.8K0
BI软件中的管理驾驶舱是什么?有什么特点?
什么是会话
2、当执行php xxx.php 时,默认系统会把当前的进程设置为会话首进程(使用strace查看),所以当前会话首进程不能使用posix_setsid 创建为会话首进程,只能使用子进程调用此函数
北溟有鱼QAQ
2021/06/10
1.2K0
PHP中的会话
2、当执行php xxx.php 时,默认系统会把当前的进程设置为会话首进程(使用strace查看),所以当前会话首进程不能使用posix_setsid 创建为会话首进程,只能使用子进程调用此函数
北溟有鱼QAQ
2021/06/08
1.3K0
来来来,给您送🕐了
theme: channing-cyan highlight: a11y-dark
用户4793865
2023/02/03
3520
来来来,我们聊一聊,为什么不建议使用递归操作?
对于树的遍历,无论是前序、中序还是后序遍历,大家可能下意识的就会想到递归,为什么呢?因为递归操作实现起来“简单”啊,而且树的结构完美契合了递归的应用场景!下面为实现二叉树中序遍历的递归实现:
CG国斌
2020/03/28
9790
session和cookies会话机制详解session management会话管理的原理servlet&jsp中的session会话管理机制cookie的更多用处
web请求与响应基于http,而http是无状态协议。所以我们为了跨越多个请求保留用户的状态,需要利用某种工具帮助我们记录与识别每一次请求及请求的其他信息。举个栗子,我们在淘宝购物的时候,首先添加了一本《C++ primer》进入购物车,然后我们又继续去搜索《thinking in java》,继续添加购物车,这时购物车应该有两本书。但如果我们不采取session management会话管理的话,基于http无状态协议,我们在第二次向购物车发出添加请求时,他是无法知道我们第一次添加请求的信息的。所以,我们就需要session management会话管理!
desperate633
2018/08/22
1.5K0
session和cookies会话机制详解session management会话管理的原理servlet&jsp中的session会话管理机制cookie的更多用处
会话及管理技术
第五章 会话以及会话管理技术 1.会话概述: 什么是会话:从打开浏览器,到访问网页,到最终关闭浏览器,整个过程就是一次会话。 会话的特点:包含多个请求,一次完整的会话对应一个用户。 会话管理技术
别团等shy哥发育
2023/02/27
4750
会话及管理技术
来来来,我们聊一聊,为什么不建议使用递归操作?
对于树的遍历,无论是前序、中序还是后序遍历,大家可能下意识的就会想到递归,为什么呢?因为递归操作实现起来“简单”啊,而且树的结构完美契合了递归的应用场景!下面为实现二叉树中序遍历的递归实现:
CG国斌
2021/12/07
4670
cocos软件可以干什么?有什么特点?
cocos是一款由触控科技推出的关于游戏开发的软件,可以一站式解决游戏开发、游戏制作、游戏上线等流程,能够为游戏开发者减轻负担,让游戏开发者将更多的精力投入到游戏内容的创作上。那么具体来说,cocos软件可以干什么呢?下面为大家介绍cocos软件的用途以及产品特点。
用户8715145
2021/06/17
2.5K0

相似问题

使用Wix的技巧和提示有哪些?

102K

容器内部可以ping通主机,但主机无法ping通容器 ip?

056

虚拟货币、数字货币、加密货币、代币、通证有什么区别?

41.8K

照这个文档,真的可以调通?

5401

网址可以PING通,但是页面打不开,是什么原因呢?

2762
相关问答用户
擅长3个领域
擅长4个领域
腾讯 | 技术专家擅长2个领域
萃橙科技 | 合伙人擅长4个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档