R:从字符串定义函数

2024-02-21

我想定义一个函数f来自参数和表达式character从 a 读取的字符串.csv文件。 这个功能f有以下表达式:

f = function( parameters ) { expression }

其中参数是 n 个参数的列表,表达式是这些参数的函数。 例如:参数是x1,x2,x3,表达式为(x1+x2)*x3。 功能f那么就是f = function(x1,x2,x3){ (x1+x2)*x3 }。 我如何在 R 中定义此类函数?

编辑添加更多上下文:

给定 2 个字符串,用于正文和参数

body="(x1+x2)*x3"
args = "x1,x2,x3"

我们怎样才能得到?:

function (x1, x2, x3) 
(x1 + x2) * x3

注意这个问题 https://stackoverflow.com/questions/12982528/how-to-create-an-r-function-programmatically类似,但不准确回答这个问题,因为提出的解决方案不会从字符串创建函数形式(参数)。


eval() and parse()一起使用,可以帮助您做您想做的事:

body <- "(x1 + x2) * x3"
args <- "x1, x2, x3"

eval(parse(text = paste('f <- function(', args, ') { return(' , body , ')}', sep='')))
# Text it:
f(3,2,5)
## 10

说明: parse() https://stat.ethz.ch/R-manual/R-devel/library/base/html/parse.html将返回已解析但未计算的表达式。我用text函数中的参数将字符串传递给解析器。eval() https://stat.ethz.ch/R-manual/R-devel/library/base/html/eval.html将计算已解析的表达式(在本例中,它将执行您刚刚解析的代码块)。

希望这可以帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R:从字符串定义函数 的相关文章

  • 为什么 sapply 的缩放速度比样本大小的 for 循环慢?

    假设我想采用向量 X 2 1 N 并将 e 计算为每个元 素的指数 是的 我认识到最好的方法就是通过向量化 exp X 但这样做的目的是将 for 循环与 sapply 进行比较 我通过逐步尝试三种方法 一种使用 for 循环 两种以不同方
  • 如何在 R 中的 for 循环内将值存储在向量中

    我正在开始使用 R 但我对以下问题感到非常沮丧 我试图将 for 循环内完成的某些计算的值存储到我之前定义的向量中 问题是如何进行索引 因为for循环迭代代码的次数取决于用户的输入 所以变量i不一定要从1开始 它可以从80开始 for举个例
  • 更新 R6 对象实例中的方法定义

    如何更新 R6 类实例的方法定义 正如我所期望的 S3 使用当前的方法定义 对于 R5 参考类 我可以使用 myInstance myInstance copy 在 R6 中 我尝试了 myInstance myInstance clone
  • 从 data.frame 在 ggplot 图例中添加信息

    我想在图例中添加信息 哪个传感器具有该值 这是我的代码 z lt data frame a c sensor 1 sensor 2 sensor 3 sensor 4 sensor 5 sensor 6 sensor 7 sensor 8
  • 在r中的某个阈值处破坏 cumsum() 函数

    例如我有以下代码 cumsum 1 100 我想打破它 如果一个元素 i 1 大于3000 我怎样才能做到这一点 因此 而不是这个结果 1 1 3 6 10 15 21 28 36 45 55 66 78 91 105 120 136 15
  • R,使用具有两种以上可能性的二项式分布

    我知道这可能是基本的 但我似乎有一个心理障碍 假设您想要计算在一个骰子上掷出 4 5 或 6 的概率 在 R 中 这很简单 sum 1 6 1 6 1 6 这给出了 1 2 这是正确答案 然而 我内心深处 可能应该保留的地方 认为我应该能够
  • R Shinydashboard 自定义 CSS 到 valueBox

    我一直在尝试将 valueBox 的颜色更改为自定义颜色 超出 validColors 中可用的颜色 但一直无法这样做 我知道有一种方法可以使用标签来包含自定义 CSS 但是我无法将它们放在正确的位置 ui lt dashboardPage
  • 在 R 中提取 data.frames 列表的名称以及 data.frame 中的值

    在下面的代码中 j是 data frames 的命名列表 我想知道是否有办法 a 提取变量的数值 即one short and one long 在 data frames 内并附加它们的相关名称 即 AAA or BBB or CCC 到
  • 在包加载之前如何知道 R 中特定函数属于哪个包?

    例如 我知道许多流行的功能 例如tbl df 我通常不记得它属于哪个包 即data table or dplyr 所以我必须始终记住并加载一个包 但我做不到 tbl df除非我加载了正确的包 在 R 控制台本身加载或安装包之前 有没有办法知
  • dplyr:连接中的 NSE (by)

    我很难弄清楚如何使用 dplyr left join 和 NSE 连接两个表 问题是我无法为 by 提供正确的值 我想我现在已经找到了解决方案 但感觉我正在以一种额外复杂的方式来做 因此 如果您知道更简单 更优雅的解决方案 请告诉我 这就是
  • R:按组,测试一个变量的每个值是否存在于另一个变量中

    我有一个数据框架 结构如下 a lt c 1 1 1 2 2 2 3 3 3 3 4 4 b lt c 1 2 3 1 2 3 1 2 3 4 1 2 c lt c NA NA 2 NA 1 1 NA NA 1 1 NA NA df lt
  • 要在子集中显示的非数字条目的维恩图

    我有以下数据框 SET1 SET2 SET3 par1 par2 par1 par2 par3 par2 par3 par4 par5 我想制作一个维恩图 其中所有这些 parX 元素都显示在各自的子集中 即作为标签 而不仅仅是重叠元素的数
  • 如何在 R 中的 dygraph 标题中使用 UTF-8 字符

    使用 Rstudio Windows8 当我使用 dygraph 函数绘制时间序列时 在尝试在主标题中使用 UTF 8 字符时遇到问题 library dygraphs dygraph AirPassengers main T tulo 这
  • 将维基百科中的表格加载到 R 中

    我正在尝试从以下 URL 将最高法院法官表加载到 R 中 https en wikipedia org wiki List of Justices of the Supreme Court of the United States http
  • 如何像在facet_grid中一样在facet_wrap中定位条带标签

    我想在使用时删除多余的条带标签facet wrap 并用两个变量进行分面 并且都是自由尺度的 例如 这个facet wrap下图的版本 library ggplot2 dt lt txhousing txhousing year in 20
  • HTTR GET 新错误:SSL 证书问题:证书已过期

    我已经运行这段代码几个月了 没有出现任何问题 今天我突然开始在我的两台 AWS 服务器上收到以下错误消息 错误 curl curl fetch memory url handle handle SSL证书问题 证书已过期 当尝试运行以下代码
  • 获取包含矩阵行内最大值的列名称,该矩阵在数组内包含单独的最大值

    例如给出 dim1 lt c P PO C T dim2 lt c LL RR R Y dim3 lt c Jerry1 Jerry2 Jerry3 Q lt array 1 48 c 4 4 3 dimnames list dim1 di
  • R 数据结构的运算效率

    我想知道是否有任何关于操作效率的文档R 特别是那些与数据操作相关的 例如 我认为向数据框添加列是有效的 因为我猜您只是向链接列表添加一个元素 我想添加行会更慢 因为向量保存在数组中C level你必须分配一个新的长度数组n 1并将所有元素复
  • 将整个包传递给雪簇

    我正在尝试并行化 使用snow parLapply 一些依赖于包 即除snow 调用函数中引用的对象parLapply必须使用显式传递给集群clusterExport 有没有办法将整个包传递到集群 而不必显式命名每个函数 包括用户函数调用的
  • R 中的数据框操作 - 将单元格向左移动并删除 NA

    我有一个数据框 其列由随机分布的值和 NA 组成 如下所示 a lt c S E NA S NA b lt c A NA M G K c lt c I NA NA NA L meh lt dataframe a b c 1 2 3 4 5

随机推荐

  • 简单的 Java 按钮来显示圆

    我目前正在学习java 我理解除图形之外的概念 作为程序员 这对我来说是全新的 坦白说 它让我不知所措 理论上 我的示例应该在按下按钮时显示一个圆圈 使用打印方法进行调试 我不断发现 Button 正确调用了所有方法并创建了一个新的 Cir
  • 从Java中的mimepart获取图像的base64内容字符串

    我正在尝试获取 MimeMultiPart 中 MimePart 的 base64 内容 但我在使用 Javamail 包时遇到了困难 我只是想要某个内联图像的 base64 编码字符串 但似乎没有一种简单的方法可以做到这一点 我写了一个方
  • AngularJS:如何从控制器功能切换视图?

    我正在尝试使用ng clickAngularJS 的切换视图功能 我将如何使用下面的代码来做到这一点 索引 html div div click me div div 控制器 js function Cntrl scope scope so
  • 打击存在不起作用

    实际上我使用 smack API 编写了一个 IM 服务 继承了 google chat 但是当我想打印好友列表及其存在时 编译模式显示所有存在不可用 但在调试模式下它显示真正的可用性 我的代码是 1 创建连接 public boolean
  • 使用 Chart.js 绘制条形图的 X 轴多色标签

    我需要不同颜色的 x 轴标签 我使用 chart js 我尝试了下面的代码 但它不起作用 只显示单色 scales xAxes ticks fontColor rgba 245 88 97 1 rgba 245 88 97 1 rgba 2
  • 如何在 Rust 中创建具有常量值的枚举?

    我可以做这个 enum MyEnum A i32 B i32 但不是这个 enum MyEnum A 123 123 is a constant B 456 456 is a constant 我可以创建结构A and B使用单个字段 然后
  • 删除传单地图上的图例

    我有一个传单地图 设置为当用户单击按钮时根据类别更改样式 实时地图 http maneesha github io test map html http maneesha github io test map html 源代码 https
  • Android MediaCodec 输出格式:GLES 外部纹理 (YUV/NV12) 到 GLES 纹理 (RGB)

    我目前正在尝试在 Android 上开发一个视频播放器 但在颜色格式方面遇到了困难 Context 我通过以下标准组合提取和解码视频媒体提取器 媒体编解码器 因为我需要提取的帧可用作 OpenGLES 纹理 RGB 我设置了我的解码器 媒体
  • 更改 FontSize 以适合 TextBlock

    我正在开发 Windows 8 应用商店应用程序 我们知道显示尺寸有很大不同 因此所有元素都有可拉伸设置 因此如果显示较小 元素 图片 图表等 较小 如果显示较大 则较大 除了 TextBlocks 标签 之外 一切都完美 TextBloc
  • 如何将图标添加到我的存储库?

    我发现 Gitlab 和 SourceTree 支持每个存储库的图标 这使得它们更加具体且易于一眼找到 这怎么可能 作为开发人员 我们有时需要进行更改以使我们的工具看起来有所不同 你可以添加一个小的 我更喜欢96px x 96px logo
  • 有什么跨平台方法可以从标头构建 cpp 骨架吗? [复制]

    这个问题在这里已经有答案了 我厌倦了将标头复制粘贴到我的 cpp 文件中 然后对其进行修改 直到其格式正确 有没有人编写过一个程序来读取头文件并制作相应的cpp框架 我需要一些跨平台的东西或者至少可以在 Linux 上运行的东西 vim 插
  • 使用全名搜索时,Gem Ransack 不会返回任何结果

    我正在使用 Ransack 和 Rails 3 我的看法 p class button p 我的架构 create table users force gt true do t t string first name
  • 从 SQL Server 中的表中选择 XML

    我的表中存储有 XML 该表具有 int 类型的列 id 和 XML 类型的值 我正在使用 SQL Server 2012 XML 看起来像这样
  • IPython %timeit 魔法的 -n 和 -r 参数

    我想使用以下方法对代码块进行计时timeitJupyter 笔记本中的魔法命令 根据文档 timeit需要几个参数 其中两个特别控制循环次数和重复次数 我不清楚这两个论点之间的区别 例如 import numpy N 1000000 v n
  • 如何检查列表中的任何单词是否包含部分字符串?

    var list alist Contains somestring 这匹配整个字符串 如何查看列表中的任何单词是否具有匹配 somestring 的子字符串 您可以使用可枚举 任意 http msdn microsoft com en u
  • gitosis 在哪里存储工作副本?

    我想知道 gitosis 在哪里存储我的存储库的工作副本 我可以通过 gitweb 界面看到文件树 但在 srv gitosis repositories testrepo 中找不到任何工作副本 我还能够推送和克隆到存储库 但是 在不知道工
  • 是否可以在 Delphi 可执行应用程序中嵌入并运行 exe 文件?

    资源文件 RES 接受任何类型的二进制文件 但如果它是 exe 文件 我该如何运行它 您必须将其作为文件提取到磁盘并执行它 尽管您不必将其提取到磁盘 正如 Cosmin Prund 在评论中所说 但如果您不这样做 则需要大量的艰苦工作
  • 如何构造一个不区分大小写的枚举?

    我有一个简单的 Python 2 7 枚举 from enum import Enum class Label enum RedApple 1 GreenApple 2 我希望能够使用不区分大小写的键创建枚举对象 fruitname red
  • 如何将命令行参数转换为 int?

    我需要获取一个参数并将其转换为 int 到目前为止 这是我的代码 include
  • R:从字符串定义函数

    我想定义一个函数f来自参数和表达式character从 a 读取的字符串 csv文件 这个功能f有以下表达式 f function parameters expression 其中参数是 n 个参数的列表 表达式是这些参数的函数 例如 参数