将所有函数保存在txt文件中

2023-12-24

我通常会运行大量模拟R。 在模拟之间,R 的某些部分 代码会改变。通常情况下,我会站在旁边 模拟结果包含以下内容的 .txt 文件 其中使用的每个函数的定义 模拟。为了制作该 .txt 文件,我只需 运行这一行:

for(j in 1:length(ls()))    print(c(ls()[j],eval(as.symbol(ls()[j]))))
out<-capture.output(for(j in 1:length(ls()))    print(c(ls()[j],eval(as.symbol(ls()[j])))))
cat(out,file=paste("essay_4_code.txt",sep=""),sep="\n",append=FALSE)

在我的环境中加载所有函数后。 然而,在生成的文本文件中,R 函数 不是 R 可以解释为函数的格式。 要理解原因,这里有一个简单的例子:

rm(list=ls())
foo1<-function(x){
  sin(x)+3
}
foo2<-function(x){
  cos(x)+1
}
foo3<-function(x){
  cos(x)+sin(x)
}

会产生:

[[1]]
[1] "foo1"

[[2]]
function (x) 
{
    sin(x) + 3
}

[[1]]
[1] "foo2"

[[2]]
function (x) 
{
    cos(x) + 1
}

[[1]]
[1] "foo3"

[[2]]
function (x) 
{
    cos(x) + sin(x)
}

所以,简而言之,我想让 essay_4_code.txt R 可读


你可以使用

dump(lsf.str(), file="essay_4_code.R")

这将创建一个 .R 文件,其中包含当前搜索空间中的所有函数定义。

edit:

来自 @JoshuaUlrich 在评论中发布的相关问题:

...dump("f") will only save the function definition of f, and not its environment. 
If you then source the resulting file, f will no longer work correctly [if it 
depends on variables in the environment in was previously bound to].

或者,您可以使用save函数以可读的二进制格式保存函数load功能。这保留了函数的环境绑定,但您失去了自己读取结果文件的能力。

 do.call(save, c(as.list(lsf.str()), file='essay_4_code.Rd'))

在新会话中加载时,先前绑定到全局环境的函数将绑定到当前全局环境,而绑定到不同环境的函数将携带该环境。

rm(list=ls())
# function bound to non-global environment
e <- new.env()
e$x <- 10
f <- function() x + 1
environment(f) <- e
# function bound to global environment
y <- 20
g <- function() y + 1
# save functions
do.call(save, c(as.list(lsf.str()), file='essay_4_code.Rd'))

# fresh session
rm(list=ls())

load('essay_4_code.Rd')
f()
# [1] 11
g()
# Error in g() : object 'y' not found
y <- 30
g()
# [1] 31
ls()
# [1] "f" "g" "y"

如果您只想检查“eassay_4_code.Rd”中的函数体:

e<-new.env()
load('essay_4_code.Rd', e)
as.list(e)
# $f
# function () 
# x + 1
# <environment: 0x000000000a7b2148>
# 
# $g
# function () 
# y + 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将所有函数保存在txt文件中 的相关文章

随机推荐

  • 在 React Native WebView 中启用弹出窗口

    我有一个 React Native 应用程序 使用 React Native 0 43 3 它使用 WebView 来显示用于网上银行的网页 该网站加载一个带有登录页面的弹出窗口 对于 ReactNative WebView 此弹出窗口不会
  • 无法从 X509Store 读取 CurrentUser 证书

    我正在开发 ASP NET 4 0 Web 应用程序 我想从 X509Store 读取当前用户证书 读取 LocalMachine 证书工作正常 但如果我将 StoreLocation 设置为 CurrentUser 它会给我一个空集合 下
  • 如何控制何时在 iOS 中提示用户推送通知权限

    我使用 Swift 和 Xcode 6 以及 Parse 框架来处理服务 为 iPhone 构建了一个应用程序 在遵循有关如何设置推送通知的 Parse 教程时 说明建议我将推送通知放在 App Delegate 文件中 这是我添加到应用程
  • 从 PowerShell 使用 .NET 库

    我有一个用于操作数据库的 PowerShell 管理单元 管理单元本身只是在单独的 NET DLL 中实现的主库的包装 所有这些都用 C 编写 我已使用 installutil exe 向 GAC 注册了管理单元和实现 DLL 虽然该管理单
  • 如何使用 robolectric 对 Android 音频录制应用程序进行单元测试

    我只是想知道是否可以使用 Robolectric 框架对 Android 录音机应用程序进行单元测试 据我所知 Robolectric 没有使用模拟器或真实设备进行测试 但是在录音应用程序中 我需要测试音频是否被录制 它是否存储在SD卡上的
  • Spotify Embed iFrame 仅播放歌曲预览

    在我的网站上 即使我登录了 Spotify Premium 我似乎也只能在 Chrome 和 Safari 中播放播放列表中的曲目预览 不过 完整曲目可以在 Firefox 中播放 为什么会出现这种情况呢 这是我的网站 www studif
  • 全屏模式下的 JInternalFrame

    我打算在全屏模式下使用 JInternalFrame 作为模态 JDialog 但是 当前在调用它时并未显示它 我需要将其添加到某个容器中吗 我尝试将其添加到 JOptionPane showInternalMessage 但由于我想让对话
  • 即席查询、存储过程、动态 SQL [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • PHP - 简单 XML - 嵌套层次结构

    我一直在使用 PHP 的简单 XML 函数来处理 XML 文件 下面的代码适用于简单的 XML 层次结构 xml simplexml load file test xml echo xml gt getName br foreach xml
  • 从 pandas 数据框中减去两列并将结果存储在第三列中[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我有一个数据框 df 有 3 列 我想执行减法如下 df available df recommended df man
  • 使用 class.forname 但想要自动装配目标类的成员

    我有这个需求 我的框架的方式是从配置文件中以字符串形式读取类名 我想使用该类中的方法 显而易见的解决方案是使用反射 我已经使用了反射并能够调用我想要的方法 但问题是目标类内的变量没有自动装配 我知道我不会让 spring 通过使用反射来自动
  • 如何将 system() 调用结果的每一行写入 Vimscript 中的列表?

    我想使用 Vimscript 循环遍历目录中的文件 阅读usr 41 txt四处搜寻后 我能想到的最好的办法就是let dir contents system ls 但是由于system 没有返回列表 我无法循环它 有没有办法可以将系统调用
  • ActiveWorkbook.Connections("x").Refresh 完成时执行的代码

    从外部源选择数据我有一个数据连接 它使用select使用 vba 代码从 SQL 服务器查询到 Excel 工作表 如下所示 With ActiveWorkbook Connections x OLEDBConnection Backgro
  • Hadoop HDFS 中块的概念

    我对 Hadoop 中的块有一些疑问 我读到 Hadoop 使用 HDFS 来创建特定大小的块 第一个问题这些块是否物理存在于普通文件系统 如 NTFS 的硬盘上 即我们可以看到托管文件系统 NTFS 上的块还是只能使用 hadoop 命令
  • Perl 就地编辑:在 X12850 格式的文件中查找和替换

    我是 Perl 新手 无法弄清楚这一点 我有一个名为Test ISA 00 00 01 SupplyScan 01 NOVA 180815 0719 U 00204 000000255 0 P GS PO SupplyScan NOVA 2
  • 如何在 Android Studio 中删除代码格式中不必要的空白行

    是否可以在 Android Studio 中删除代码格式中不必要的空白行 Yes It is possible to configure the number of blank lines in the settings menu File
  • Oracle JET:淘汰赛未更新变量

    我有以下 oracle jet 和淘汰赛 html 文件
  • 以编程方式设置 type="file" 输入 HTML 元素的值? [复制]

    这个问题在这里已经有答案了 Note 下面的答案反映了 2009 年旧版浏览器的状态 现在 您实际上可以在 2017 年使用 JavaScript 动态 编程地设置文件输入元素的值 有关详细信息以及演示 请参阅此问题中的答案 如何以编程方式
  • 为自定义驱动程序创建 GraphicsDevice

    我正在开发一个在嵌入式系统中使用 Java 的项目 我有用于屏幕和触摸输入的驱动程序 以及用于文本输入的虚拟键盘 我的屏幕驱动程序有一个Graphics2D您可以绘制的对象和repaint Rectangle 更新方法 类似地 触摸驱动器能
  • 将所有函数保存在txt文件中

    我通常会运行大量模拟R 在模拟之间 R 的某些部分 代码会改变 通常情况下 我会站在旁边 模拟结果包含以下内容的 txt 文件 其中使用的每个函数的定义 模拟 为了制作该 txt 文件 我只需 运行这一行 for j in 1 length