r - 是否可以在 R 中将方法名称作为包装函数参数传递?
问题描述
我正在开发一个基于 RSelenium 库的 R 脚本,该脚本旨在以 tibble 的形式使用“抓取场景”。因此,我想使用一个函数,根据某些参数将返回远程驱动程序的某些操作。一般的想法是有一些东西可以将参数转换为方法语法:
scraper(driver, method, arguments) == driver$method(arguments)
所以如果我打电话:
scraper(remDr, "open") - it simply does - remDr$open()
scraper(remDr, "navigate", "https://google.com") - it does - remDr$navigate("https://google.com")
scraper(remDr, "findElement", list(using = "xpath", "[@=...]") - it does - remDr$findElement("xpath", "[@=...]")
这是我最终得到的示例:
scraper <- function(driver, method, arguments = "") {
open <- function(driver) {
return(
driver$open()
)
}
close <- function(driver) {
return(
driver$close()
)
}
navigate <- function(driver, arguments) {
return(
driver$navigate(arguments)
)
}
findElement <- function(driver, arguments) {
return(
driver$findElement(arguments)
)
}
scraperMethods <- list(open = open,
close = close,
navigate = navigate,
findElement = findElement)
return(scraperMethods[[method]](arguments))
}
scraperMethods[[method]] 中的双括号约定似乎在全局环境中有效,但是当我调用时
scraper(remDr, "open")
或到目前为止在刮板功能中定义的其他方法。它抛出一个错误:
错误:$ 运算符对原子向量无效
所以我的问题是: 1. 这是正确的方法吗?2. 如果没有 - 有没有更方便的方法来实现我的目标?
提前感谢所有答案。
解决方案
推荐阅读
- android - Android compose Card在使用半透明颜色时有边框
- python - 漂亮汤中的css选择器找不到标签
- python - 在 python 中用 3d 瀑布图创建电影
- javascript - 实现从对象字段和字段值生成字符串的 C# 代码
- pandas - 根据列值创建列 - 合并整数
- vue.js - Vuetify v-simple-table 加载状态
- mysql - 是否可以将 MySQL 唯一索引更改为非唯一索引而不重新创建它
- flutter - 如何在flutter中获取当前ID(UUID?/RFID?)?
- python - 两个问题的幂的负一 - 即 (-1)**2
- google-apps-script - 有没有办法在不删除旧问题并重新制作的情况下更新现有的谷歌表单问题的描述和选项?