将逗号分隔的字符串作为列表传递

2024-03-12

假设我有一个字符串,例如"x = 1, y = 'cat', z = NULL"。我想获取代码创建的列表list(x = 1, z = 'cat', z = NULL)。这是我的第一次尝试,我知道这是horrible:

parse_text <- function(x) parse(text = x)[[1]]
strsplit2 <- function(x, ...) strsplit(x, ...)[[1]] 
trim_whitespace <- function (x) gsub("^\\s+|\\s+$", "", x)

# take 1

x <- "nk = 1, ncross = 1, pmethod = 'backward'"
x <- strsplit2(x, ",")
xs <- lapply(x, strsplit2, "=")
keys <- lapply(xs, function(x) trim_whitespace(x[1]))
vals <- lapply(xs, function(x) parse_text(x[2]))

setNames(vals, keys)

这就是我想象的更规范的方法:

# take 2

x <- "nk = 1, ncross = 1, pmethod = 'backward'"
x <- strsplit2(x, ",")
xs <- lapply(x, parse_text)

do.call(list, xs)

但这会丢失列表的名称。非常感谢任何帮助!干杯


您可以首先创建一个包含要执行的表达式的字符串(即list('your string'), 在这种情况下"list( nk = 1, ncross = 1, pmethod = 'backward' )") 具有函数paste to add list( and ),然后解析表达式parse函数并最终评估它eval功能:

x <- "nk = 1, ncross = 1, pmethod = 'backward'" #your string
eval(parse(text=paste('list(',x,')'))) #create and returns the desired list
$nk
[1] 1

$ncross
[1] 1

$pmethod
[1] "backward"

如图所示,这将返回正确的命名列表。

我希望这能帮到您。

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

将逗号分隔的字符串作为列表传递 的相关文章

随机推荐

  • scala - 激发 Dataframe 的结果集

    我正在查询 mysql 表 val url jdbc mysql XXX XX XXX XX XX compute 1 amazonaws com 3306 pg partner val driver com mysql jdbc Driv
  • AWS DynamoDB 查询不过滤 BOOL 值

    我有一个使用 GUI 创建的用户表 并给出了电子邮件分区键 它是一个字符串 然后我使用 aws lambda 来做一个 putItem 它有 email string email protected cdn cgi l email prot
  • 嵌入模板上的任何指令均未使用属性绑定 ngif

    我正在 Angular Angular2 RC4 中创建一个简单的应用程序 但我发现很难在 Nodejs 中使用实时服务器运行该应用程序 我想帮助您了解如何解决 Chrome 控制台中出现的错误 Chrome 控制台出错 browser a
  • 检查一个数据帧是否是另一个数据帧的重新排序[重复]

    这个问题在这里已经有答案了 我有两个在两个不同场合生成的数据帧 但我怀疑它们是相等的 两者具有相同的行数和列数 从视觉上看它们似乎是相同的 除了行的排序方式不同 两者都没有可以重新排序的 ID 列 我能做的最好的事情就是通过process
  • 使用 RX Java 获取过滤器索引或第一个的优雅方法

    我正在练习 RX Java 想要获取与过滤器匹配的项目在数组中的位置 我看不到任何明显的方法来做到这一点 我正在考虑压缩范围和可迭代可观察之类的东西 但它很快就变得比 for 循环更加冗长和复杂 过去有mapWithIndex and zi
  • 将 Firebase DB 与本地数据库结合使用

    在我的应用程序中我有SQLite db 我想在用户的设备之间引入同步 Firebase DB看起来是一个可以接受的解决方案 但是Firebase DB首先是云数据库 因此 如果用户拒绝身份验证对话框并让他使用应用程序 但没有云同步 我无法将
  • iOS 通过溢出滚动禁用页面滚动:触摸

    假设我们希望通过 添加到主屏幕 使网络应用程序感觉像本机应用程序 第一步是禁用默认滚动 容易 对吧 window or document window addEventListener touchmove function event no
  • 如何选择具有多个类的跨度并将其放置在锚点内?

    我所处的情况是 我需要根据应用于它的类将单击事件绑定到跨度 放置在具有多个类的锚点内 For eg 更新 添加了下面的 html 例如 div class c0 c a class c1 c2 span class c3 c4 span A
  • Supervisor 节点 .js“程序节点应用程序已退出,代码为 0”错误

    当我安装快速脚手架应用程序时 express 然后运行npm安装 npm install 然后运行主管 supervisor app I get Starting child process with node app Program no
  • 从数据库模式创建 Web 表单

    我想知道是否有任何应用程序 最好是免费软件 可以进行数据库配置 并且尽可能轻松地创建用于轻松插入数据的 Web 表单 我发现很难准确表达我所追求的是什么 也许我可以谈谈我需要什么 我有一个配置数据库 至少通常包含有关我们系统中服务器的 真相
  • 如何在 jQuery 中解析 JSON 数组?

    EDIT我检查了 jQuery 文档 并使用 ajax 和指定的 json 数据类型返回一个评估的 javascript 对象 因此 eval 不是这里的答案 无论如何 我知道这一点 因为我能够解析单个 JSON 对象 但不能解析数组 问题
  • Capybara 问题:@request 必须是 ActionDispatch::Request

    我在让 Capybara 与 Rails 一起使用时遇到问题 只是测试那个所谓有趣的测试东西 好的 在所附的代码中有几个等效的测试 第一个是用Rails 自带的shoulda context Test Unit 制作的 第二个测试也是使用水
  • bitbucket - 无法确定主机“bitbucket.org”的真实性

    我在尝试推送到我的 bitbucket 存储库时遇到了这个问题 不确定为什么指纹不匹配 It asks me if I want to continue but I can t type anything in the dialog aft
  • 未为类型“DBNull”和类型“Integer”定义运算符“=”

    过去几个小时我一直在挣扎 但仍然无法解决这个问题 我遇到的问题是 当有人被承认数据库更新给他们 BedID 时 当我尝试释放他们时 我似乎无法将 BedID 在数据库中 设置为 Nothing 这是一个问题 因为我需要能够接纳和解雇尽可能多
  • 将 csv 数据集导入到 R 但值变成因子

    我对 R 非常陌生 在访问我导入的数据集时遇到问题 我正在使用 RStudio 并在导入 csv 文件时使用导入数据集功能 并将该行从控制台窗口粘贴到源窗口 代码如下 setwd c kalle R stuckey lt read csv
  • 未调用 DOMContentLoaded 或加载事件处理程序的异步加载脚本?

    我有一个脚本DOMContentLoaded事件处理程序 document addEventListener DOMContentLoaded function console log Hi 我正在异步加载 然而 事件处理程序从未被调用过
  • Java中的正则表达式问题

    我正在尝试为以下内容创建一个正则表达式replaceAllJava 中的方法 测试字符串是abXYabcXYZ模式是abc 我想将除图案之外的任何符号替换为 例如字符串abXYabcXYZ和图案 abc 应该返回 abc 但就我而言 它会返
  • 透明表单,其中包含可见的可点击控件

    我正在尝试在 win8 和 winforms 中制作一个鼠标透明表单 其中包含可单击的控件 我可以使用此代码使表单鼠标透明 int initialStyle GetWindowLong this Handle 20 SetWindowLon
  • 具有彩色高度的 3D 瀑布图

    我正在尝试使用 Python 和 Matplotlib 以 3D 方式可视化一个数据集 该数据集由 x z 数据的时间序列 沿 y 组成 我想创建一个像下面这样的图 这是用 Python 制作的 http austringer net wp
  • 将逗号分隔的字符串作为列表传递

    假设我有一个字符串 例如 x 1 y cat z NULL 我想获取代码创建的列表list x 1 z cat z NULL 这是我的第一次尝试 我知道这是horrible parse text lt function x parse te