在 R 中将粘贴和替换与引号结合使用

2023-12-10

请注意,我已经看过了this and that但仍然无法解决我的问题。

假设一个最小的工作示例:

a <- c(1,2,3)
b <- c(2,3,4)
c <- c(4,5,6)
dftest <- data.frame(a,b,c)

foo <- function(x, y, data = data) {
    data[, c("x","y")]
    }
foo(a, b, data = dftest)

在这里,最后一行显然返回一个Error: undefined columns selected。返回此错误是因为要选择的列是x and y,它们不是数据框的一部分dftest.

问题:我需要如何制定函数的定义才能获得所需的输出,即

> dftest[, c("a","b")]
#   a b
# 1 1 2
# 2 2 3
# 3 3 4

我想通过调用函数来获得foo.

请注意,为了使解决方案对我的目的有用,函数调用的格式foo被视为固定的,也就是说,唯一的更改是对函数本身进行的,而不是对调用进行的。 IE。foo(a, b, data = dftest)是唯一允许的输入。

方法:我尝试使用paste and substitute结合eval首先更换x and y使用函数调用的参数,然后评估该调用。然而,转义引号在这里似乎是一个问题:

foo <- function(x, y, data = data) {
    substitute(data[, paste("c(\"",x,"\",\"",y,"\")", sep = "")])
    }
foo(a, b, data = dftest)    
eval(foo(a, b, data = dftest))

Here, foo(a, b, data = dftest)返回:

dftest[, paste("c(\"", a, "\",\"", b, "\")", sep = "")]

但是,当评估时eval()(仅关注paste part),

paste("c(\"", a, "\",\"", b, "\")", sep = "")

returns:

# "c(\"1\",\"2\")" "c(\"2\",\"3\")" "c(\"3\",\"4\")"

而不是如我所希望的那样c("a","b"),从而再次导致与上面相同的错误。


尝试这个:

foo <- function(x, y, data = data) {
    x <- deparse(substitute(x))
    y <- deparse(substitute(y))
    data[, c(x, y)]
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 R 中将粘贴和替换与引号结合使用 的相关文章

  • R 提交到 CRAN:构建包的 R 版本?

    我想向 CRAN 提交一个包裹 在里面CRAN 存储库政策 http cran r project org web packages policies html它指出 当发布新的 R x y 0 版本时 R CMD 检查给出 错误 的包将被
  • R中按字母顺序对每一行字符串进行排序

    我环顾四周 似乎找不到解决这个问题的好方法 我有一个包含行名称的列 我想按字母顺序对每一行进行排序 以便稍后可以识别具有相同名称但顺序不同的行 数据如下 names lt c John D Josh C Karl H John D Bob
  • 按月/年间隔汇总每日数据

    我并不经常需要在 R 中处理日期 但我认为这相当简单 我有一列代表数据框中的日期 我只想创建一个新的数据框 使用日期按月 年总结第二列 最好的方法是什么 我想要第二个数据框 这样我就可以将它提供给绘图 您能提供的任何帮助将不胜感激 编辑 供
  • 在 R 中将列表列表转换为数据帧:Tidyverse 方式

    我正在寻找将列表列表转换为 R 中的数据帧的 Tidyverse 方法 Create a list of lists a lt seq 1 10 1 b lt seq 1 20 2 Function to calculate the sum
  • R Markdown / Bookdown 中的水平规则导致错误

    突然 我在 Markdown Bookdown 中编织为 PDF 时遇到错误 我的系统没有任何变化 该错误是由 水平规则 引起的 即 Markdown 中的任意位置 或 尽管两侧都有行空格 我提供了一个简单的违规示例 它不会合并成 PDF
  • 当函数参数与c中的const参数声明不匹配时编译的程序

    我有一段这样的代码 include
  • Foreach循环无法找到对象

    我正在尝试将 foreach 与并行后端结合使用来加速计算 用于特征选择的 AUCRF 随机森林的交叉验证 如果这确实重要的话 在这样做的过程中 我需要获取向量的子集 向量的名称可以更改 但可以作为字符向量进行访问 我使用 eval par
  • dplyr 标准评估:summarise_ 以及求和变量的变量名称

    我遇到了很多与我的问题类似的问题 但只解决了我问题的一部分 我使用带有标准评估的 dplyr 来容纳变量名称 这对于管道中的 filter 和 group by 效果很好 但是 为了总结 我无法为我正在求和的指标提供变量名称 一个例子就可以
  • R strsplit 问题(容易解决吗?)

    这应该是一件很容易做到的事情 我在这里读到的类似示例有点复杂 而且这些技术对我来说并不真正有效 我有一个名为 id string 的变量 gt typeof id string 1 character and gt id string 1
  • rpy2 在从 R 到 Python 的数据帧中处理 NA/缺失值时出现问题

    我在使用rpy2包进行转换时遇到问题dataframe将 R 中的内容保存到 Python 中 import os os environ R HOME Library Frameworks R framework Resources imp
  • 添加带有错误的弹出窗口,警告闪亮

    有什么办法可以添加一个popup 可关闭的窗口 其中包含警告或其他消息Shiny 我用来构建 Web 应用程序的 R 包 我已经寻找了一段时间但没有任何结果 虽然我不认为有任何本地可用的东西shiny 你可以尝试添加jQueryUI到您的应
  • R闪亮的html小部件之间的交互

    我正在开发一个 R 闪亮应用程序 它使用多个 html 小部件 特别是网络D3 d3热图 and 和弦诊断 这些小部件单独工作正常 但是 在同一页面中使用它们会留下一个空格处他们应该在哪里 这是显示错误的可重现代码 在 UI 中注释绘图线
  • r : 直方图上的 ECDF

    在 R 中 与ecdf我可以绘制经验累积分布函数 plot ecdf mydata 与hist我可以绘制数据的直方图 hist mydata 如何在同一图中绘制直方图和 ecdf EDIT 我尝试做类似的东西 https mathemati
  • R:变换不规则时间字符串

    我有两个不同的时间序列 来自不同的数据帧 具有不同的不规则格式 但问题是相同的 我只想提取小时 分钟 秒和毫秒 时代系列看起来像这样 ts1 08 27 23 445 08 27 24 280 08 27 25 115 I tried st
  • Shiny 中的模态对话框:可以调整宽度但不能调整高度

    在我的 Shiny 应用程序中 我有几个来自闪亮BS 包的模式窗口 我可以像这样调整这些模式窗口的宽度 tags head tags style HTML modal lg width 1200px abs 1 background col
  • profvis() 何时以及为何显示“源不可用”?

    我经常分析 R 代码 并大量使用 profvis 对于某些函数 浏览器窗口的上半部分会显示源代码 有时则不会 我不知道什么时候会出现这种情况 对我来说这似乎是随机的 有谁知道 profvis 何时以及为什么无法在顶部窗口中显示代码 发生这种
  • 如何从 data.frame 中选择行和列的子集

    我有这个 d d Age gt 2 它返回 Age 超过 2 的所有行 但我只想返回几列中的值 例如 d X 和 d Y 而不是全部 无论如何我可以做到这一点吗 Thanks d d Age gt 2 c X Y
  • Quarto/Rmarkdown 中的美人鱼图:狭窄且模糊

    我正在尝试生成 pdf 格式的四开文档 稍后会生成 word 格式 我遇到了美人鱼图的问题 请在下面找到一个示例 qmd 文件来说明该问题 所以首先它应该支持 mermaid 标签 但当我这样做时 我无法在 rstudio 中 运行 单元
  • ggplot 中跨组的连续线

    我有一个数据时间序列 其中观察了一些数据 模拟了一些数据 我想生成整个数据系列随时间变化的图 其中颜色表示数据源 但是 我只能弄清楚如何使 ggplot 中的 geom line 连接同一组中的点 这是一个例子来说明 Create samp
  • 使用 ggplotly(ggplot2 withplotly)时可以去掉注释中的跟踪标签吗?

    使用ggplotly时是否可以删除注释中的跟踪标签 例如 library ggplot2 library plotly g lt ggplot iris aes Sepal Width Sepal Length geom point ann

随机推荐

  • 确定Word单元格是否合并

    我需要以编程方式在 Word 2010 表中添加和删除行 不幸的是 表的标题包含合并的单元格 水平和垂直合并 使用 Row Add 和 Row Delete 方法时这会导致错误 我已经测试并发现我可以以编程方式删除合并的单元格 Cell S
  • 我的控制器的 rspec 测试返回 nil(+工厂女孩)

    我正在用 rspec 和 Factory Girl 在 Rails 上学习测试 但我无法让它们工作 我的用户控制器如下所示 class UsersController lt ApplicationController def index u
  • 400 Hibernate @Valid 的错误请求

    当我验证我的表单时 我有一个奇怪的行为 一旦我添加 Hibernate Valid 注释 如果发布的数据无效 Tomcat 就会将我的请求视为 错误 如果数据有效 就不用担心 I use 雄猫7 0 52 Javax 验证 API 1 1
  • Jasper Report - 在 PDF 文档中设置作者属性

    有没有办法在从 Java 调用 Jasper 时通过设置参数来设置 PDF 文档的 Author 属性 这就是我从 Java 生成 Jasper 报告的方法 JasperPrint jasperPrint String outFile 39
  • 如何正确使用ObjectBox flutter store的打开和关闭?

    我希望使用 Flutter 和 ObjectBox 1 1 1 gt Flutter 定义最佳开发实践 我想建立一个由Repository组成的架构来实现对数据库中存储的对象的查询功能 这是一个对象人的示例 存储库主要从 viewModel
  • python - add() 不会将类的实例添加到组中,因为它不可迭代,但它正在迭代

    我学习 Python 一段时间了 并且正在阅读 Python 速成课程教科书 以防万一您可能熟悉该文本中的练习 第一个项目是 太空入侵者 的克隆版 到目前为止一直运行顺利 当我将外星人绘制到屏幕上时 我有一些代码可以检查窗口尺寸并将其与外星
  • 如何在 HTML 中配置事件监听器?

    举个例子 我们可以执行如下操作 使监听器仅在事件捕获阶段触发 element addEventListener event function true Or element addEventListener event function p
  • 如何根据另一个数据框中的变量从数据框中选择列

    我只想从 df2 中选择那些等于 python pandas 中 df1 的变量的列 df1 parameter column name a b c df2 w x a c z 3 1 5 6 1 5 67 4 3 56 8 12 6 1
  • 仅将 hclust 绘制到切割的簇,而不是每个叶子

    我有一个包含近 2000 个样本的 hclust 树 我已将其切割成适当数量的簇 并希望绘制树状图 但以我切割簇的高度结束 而不是一直切割到每片叶子 每个绘图指南都是关于按簇为所有叶子着色或绘制一个盒子 但似乎没有什么可以完全保留切割线下方
  • 对变量 R 上的变量进行计数 [重复]

    这个问题在这里已经有答案了 Tid lt c 1 1 2 2 2 3 4 4 Uid lt c 10 10 11 11 12 13 10 14 Data lt data frame Tid Uid 我想知道每个Tid上有多少个不同的Uid
  • 我什么时候应该在 MVC 中使用 Html.Displayfor

    我是 MVC 新手并且知道如何使用Html Displayfor 但不知道什么时候用 任何想法 The DisplayForhelper 为给定类型呈现相应的显示模板 例如 您应该将其与集合属性一起使用 或者如果您想以某种方式个性化此模板
  • java JTable 对对象进行排序

    很抱歉问这个问题 但我在理解如何做到这一点上遇到了巨大的问题 我有一个JTable 为了那个原因JTable我有我自己的AbstractTableModel返回一个自定义对象getValueAt 另外我也有自己的TableCellRende
  • 如何使用 SwashBuckle 设置或删除默认响应内容类型

    使用 SwashBuckle 时的默认响应内容类型是text plain 我怎样才能将默认值更改为application json甚至删除text plain 终点的响应内容不是由Swashbuckle而是通过 ASP NET Web AP
  • 将 Selenium HTML 源代码存储到 HTMLDocument 类型的元素中

    是否可以将使用 Selenium 使用 Excel VBA 抓取的 HTML 源存储到HTMLDocument元素 这是一个使用的示例Microsoft Internet Controls and Microsoft HTML Object
  • 使用智能指针实现简单的单链表

    你好 我正在尝试使用智能指针实现一个简单的单链表 这是我到目前为止所拥有的 我选择使用 C 的shared ptr 但我读到 unique ptr 更适合这种情况 但是 我真的不知道知道如何迭代列表 即 currentNode curren
  • Laravel 访问公共文件夹之外的图像

    我需要在后端存储登录用户的图像 存储的图像需要受到保护 并且从外部 公众 不可见 我为此选择了一个 存储 文件夹 我在我的控制器中想出了这个 public function update Request request id Show th
  • 如何允许 EF4 CodeFirst 数据库初始化程序在开发中运行,但不在生产中运行

    我正在尝试在线部署我的第一个 alpha 版本的系统 供少数人开始使用 在开发过程中我大量使用DropCreateDatabaseOnModelChange
  • 如何在 Python 中输入转义序列? [复制]

    这个问题在这里已经有答案了 假设你编写了以下程序 a input Input print a 并尝试输入换行符 n Input a nb a nb 输入未被视为 n字符而是作为两个单独的字符 and n 如何将带有转义序列的输入视为转义序列
  • PHP 表单复选框和未定义索引

    提交带有未选中复选框的表单时 出现 未定义索引 错误 除了对每个单独的发布值运行 isset 或 empty 检查之外 还有其他方法吗 我看过这个Question我很难相信这是唯一的解决方案 下面是一些示例代码 编辑 请注意 这些不是表列的
  • 在 R 中将粘贴和替换与引号结合使用

    请注意 我已经看过了this and that但仍然无法解决我的问题 假设一个最小的工作示例 a lt c 1 2 3 b lt c 2 3 4 c lt c 4 5 6 dftest lt data frame a b c foo lt