R 中的 Markdown 表到数据框

2024-03-16

有多种方法可以将数据框转换为 Markdown 表。 但是,给定 Markdown 表,如何转换回数据帧

给定一个表格:

Table Header | Second Header
------------- | -------------
Table Cell | Cell 2
Cell 3 | Cell 4 

或者,更糟糕的是,以某种形式

Table Header | Second Header \n------------- | ------------- \nTable Cell | Cell 2 \nCell 3 | Cell 4 

如何将其放入数据框中?


我编写了几个函数来处理这些问题,尽管我怀疑对于编写如此答案的人来说,这比其他人更容易成为问题。不管:

# base R version
read.markdown <- function(file, stringsAsFactors = FALSE, strip.white = TRUE, ...){
    if (length(file) > 1) {
        lines <- file
    } else if (grepl('\n', file)) {
        con <- textConnection(file)
        lines <- readLines(con)
        close(con)
    } else {
        lines <- readLines(file)
    }
    lines <- lines[!grepl('^[[:blank:]+-=:_|]*$', lines)]
    lines <- gsub('(^\\s*?\\|)|(\\|\\s*?$)', '', lines)
    read.delim(text = paste(lines, collapse = '\n'), sep = '|', 
               stringsAsFactors = stringsAsFactors, strip.white = strip.white, ...)
}

# readr version
read_markdown <- function(file, trim_ws = TRUE, ...){
    if (length(file) > 1) {
        lines <- file
    } else {
        lines <- readr::read_lines(file)
    }
    lines <- lines[!grepl('^[[:blank:]+-=:_|]*$', lines)]
    lines <- gsub('(^\\s*?\\|)|(\\|\\s*?$)', '', lines)
    readr::read_delim(paste(lines, collapse = '\n'), delim = '|', 
                      trim_ws = trim_ws, ...)
}

他们可以处理 Markdown 表的许多变体,并且对单个字符串感到满意:

read.markdown('Table Header | Second Header \n------------- | ------------- \nTable Cell | Cell 2 \nCell 3 | Cell 4 ')
#>   Table.Header Second.Header
#> 1   Table Cell        Cell 2
#> 2       Cell 3        Cell 4

线向量(就像从clipr::read_clip):

clipr::write_clip(
' |                     |  mpg  |  cyl  |  disp  |  hp  |
 |:-------------------:|:-----:|:-----:|:------:|:----:|
 |      Mazda RX4      |  21   |   6   |  160   | 110  |
 |    Mazda RX4 Wag    |  21   |   6   |  160   | 110  |
 |     Datsun 710      | 22.8  |   4   |  108   |  93  |'
)

read.markdown(clipr::read_clip())
#>               X  mpg cyl disp  hp
#> 1     Mazda RX4 21.0   6  160 110
#> 2 Mazda RX4 Wag 21.0   6  160 110
#> 3    Datsun 710 22.8   4  108  93

或文件名(尽管文件只能包含表和空格):

tmp <- tempfile()
writeLines(
' +---------------------+-------+-------+--------+------+--------+
 |                     |  mpg  |  cyl  |  disp  |  hp  |  drat  |
 +=====================+=======+=======+========+======+========+
 |      Mazda RX4      |  21   |   6   |  160   | 110  |  3.9   |
 +---------------------+-------+-------+--------+------+--------+
 |    Mazda RX4 Wag    |  21   |   6   |  160   | 110  |  3.9   |
 +---------------------+-------+-------+--------+------+--------+
 |     Datsun 710      | 22.8  |   4   |  108   |  93  |  3.85  |
 +---------------------+-------+-------+--------+------+--------+',
tmp
)

read_markdown(tmp)
#> Warning: Missing column names filled in: 'X1' [1]
#> # A tibble: 3 x 6
#>   X1              mpg   cyl  disp    hp  drat
#>   <chr>         <dbl> <int> <int> <int> <dbl>
#> 1 Mazda RX4      21.0     6   160   110  3.90
#> 2 Mazda RX4 Wag  21.0     6   160   110  3.90
#> 3 Datsun 710     22.8     4   108    93  3.85

Edit:我已将这些功能放入一套 https://alistaire47.github.io/read.so/,如果有人觉得它们有用的话。

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

R 中的 Markdown 表到数据框 的相关文章

  • 可以明确声明包依赖项的版本吗?

    我倾向于对我编写的代码进行明确而不是隐含的描述 因此 在成功创建自己的包之后 我立即想到的下一件事是如何最好地确保代码的健壮性和可靠性 其中一部分与我的包所依赖的包有关 实际问题 在这方面 是否可以明确声明需要 期望哪个版本的包依赖项 我正
  • R从列表中提取数据框,列名中没有前缀

    我在列表中放置了一个数据框 然后 当尝试将其提取回来时 我得到了该数据帧的所有以列表键为前缀的列名称 有没有办法完全按照最初传递的方式提取数据帧 cols lt c column1 Column2 Column3 df1 lt data f
  • R read_excel:libxls 错误:无法解析文件

    我试图使用 readxl read excel 将 xls 文件读入 R 但它给出了以下错误 Error filepath data xls libxls error Unable to parse file 还尝试了 readxl exc
  • 在 mac (iMac OSX ) 终端中远程运行脚本(r 脚本)到其他计算机

    我有一个小示例脚本 script p r 如下所示 打算在终端中运行 usr bin Rscript sink output capture txt mn lt mean 1 10 and so on much longer list of
  • 将 JSON URL 转换为 R 数据帧

    我在将 JSON 文件 从 API 转换为 R 中的数据帧时遇到问题 例如 URL 我尝试了 S O 的一些不同建议 包括将json数据转换为R中的数据框 https stackoverflow com questions 28683769
  • 将值替换为其各自列的名称

    我有一个数据框 Code 401k CVS 101A true 231N true FD54 true 99JB 85F4 true 我试图用相应的列名称 例如 401k 替换 true 字符值 这是我想要的输出 Code 401k CVS
  • 如何使用 R 中带引号的字符值内的序列读取 CSV?

    这是一个包含两个字符列的 CSV 文件 key value a 所有字符值都用双引号引起来 并且有一个顺序 在值之一内 转义引号加分隔符 我无法通过 read csv readr 中的 read csv 或 data table 中的 fr
  • ggplot 中的错误问题:“grid.Call(”L_textBounds“, as.graphicsAnnot(x$label), x$x, x$y, … 中的错误”[重复]

    这个问题在这里已经有答案了 我试图在 ggplot 中制作一个条形图 其中我通过强制其中一些标签为长度为零的字符串 即 来指定要显示的标签 但是 我收到错误 Error in grid Call L textBounds as graphi
  • dplyr,do(),从模型中提取参数而不丢失分组变量

    R 帮助中关于 do 的示例略有不同 by cyl lt group by mtcars cyl models lt by cyl gt do mod lm mpg disp data coefficients lt models gt d
  • 使用 dplyr:group_by 将数据帧分成多个子集?

    有没有办法根据 group by 组使用 dplyr 将一个数据帧拆分为数据帧的子集 mtcars gt group by cyl gear gt codes 非常感谢 好吧 并不是你真的想要 但你可以这样做tidyr 即nearly一样的
  • 在 R 中绘制对数正态概率密度

    我正在尝试在 R 中生成对数正态概率密度图 其中包含 3 个不同的均值对数和标准差对数 我尝试了以下方法 但我的图表太丑了 看起来一点也不好看 x lt seq 0 10 length 100 a lt dlnorm x meanlog 0
  • 在另一个 Rmd 中运行选定的块

    我已经在源 Rmd 文件中运行了分析 并且希望仅使用few来自源的块 我已经看到了一些关于从源 Rmd 中提取所有块的答案来自另一个 Rmd 中的 Rmd 文件的源代码 https stackoverflow com questions 4
  • R:表格格式

    我有一个包含以下列的 Excel 文件 Column1 Column2 Column3 ab bb 0 5 ab bc 0 1 ab cd 0 7 ab dd 0 8 ac bb 0 2 ac bg 0 8 ac ee 0 8 ac dd
  • 表单提交时出现 rvest 错误

    我想从以下网页中抓取数据 https swgoh gg u zozo collection 180 emperor palpatine https swgoh gg u zozo collection 180 emperor palpati
  • R:将 JSON 时间格式转换为 POSIX

    我有一个 JSON 字符串 并将其放入数据框中 我能够做到这一点 但我在使用 apply 函数之一将所有时间字符串转换为 POSIX 格式时遇到问题 See here https stackoverflow com questions 90
  • 如何在R中同时对三个字段进行网络分析

    如何在 R 中同时对三个字段进行网络分析 下面是示例数据以及desired output在最后一栏中 df lt data frame stringsAsFactors FALSE id 1 c ABC ABC BCD CDE DEF EF
  • 使用 dplyr::filter 的整洁方式是什么?

    使用下面的函数调用foo c b 输出以内联方式显示 正确的写作方式是什么df gt filter x gt x 我已经包含了一个使用的示例mutate以整洁的风格与之对比filter foo lt function variables x
  • 16 位以上整数的计算

    我有两个大整数 两者都超过 16 位 确切地说是 20 位 而且我知道由于双精度浮点运算 我在使用这些数字进行计算甚至将它们存储在变量中 独立于编程语言 时受到限制 不过 我想也许gmp图书馆应该处理它们 但不幸的是它没有 可以计算更大的整
  • GGPLOT2:如何在 ggplot() 脚本中绘制特定选择

    这是一个名为的大型数据集的峰值P 其中有 10 个优惠 CS 有不同的商店 SHP 具有多个数值 数据集列出了按周排序的它们 WK 2 tm 52 它创建一个大文件 仅前 6 行出现峰值 WK MND CS SHP RevCY RevLY
  • 单击 R 中的 Sankey Chart 线时添加额外的标签值

    以下 R 闪亮脚本创建一个桑基图 如下面的快照所示 我的要求是 当我单击左右节点之间的任何链接 即 a1 和 a2 时 我希望相应的 a3 的总和出现在标签中 例如 a1 中的 A 和 a2 中的 E 总共具有值 50 和 32 因此 我想

随机推荐

  • 如何在Python中使用socket创建通道

    我之前已经启动过Python几次 现在我正在创建一个套接字服务器 我已经让服务器与多个客户端一起使用多个线程 万岁 但我正在寻找我无法调用的功能 我什至不知道它是否存在 我想创建一种客户端通道可以发送不同类型的消息 一个例子 我创建一个通道
  • 使用 MVVM 在 SwiftUI 中呈现警报

    我正在尝试使用 SwiftUI 和 MVVM 架构构建一个应用程序 我希望我的视图在其 ViewModel 认为有必要时 例如 当它从模型中获得某种新结果时 显示警报 因此 假设每当虚拟机检测到新结果时 它就会设置其status因此 视图模
  • 使用 net.tcp://0.0.0.0:0/blah 的服务主机发现 WCF 宣布 net.tcp://0.0.0.0:0/blah

    我想要一个可发现的服务 它可以侦听所有接口并为每个接口发布发现公告 我希望最终能够使用 tcp 0 0 0 0 0 blah 作为服务端点在配置文件中进行配置 但是当我运行下面的代码时 它发出的公告使用 tcp 0 0 0 0 0 blah
  • Silverlight 与 IIS 10.0 上的 RIA 服务导致 404 错误

    尝试使用 WCF RIA 服务迁移现有的正在运行的 Silverlight 应用程序IIS 6 0 to IIS 10 0 on W视窗服务器 2016但应用程序失败返回404错误s 当我在服务器上安装 Visual Studio 并尝试运
  • 自动运行多个 vim 命令和击键

    我想在 vim 中自动运行多个命令 即通过键入 repl 命令是 ConqueTerm lein repl
  • AChartEngine 的 Android 问题:在边距中设置图像

    是否可以将图像设置为背景边距 我通常使用mRenderer setMarginsColor Color argb 0x00 0x01 0x01 0x01 但我想设置一个图像 您无法在 AChartEngine 中将图像设置为背景 因为它是开
  • 使用点“.” MVC4 路由中的角色

    我目前正在提供来自数据库表的图像 这些图像都是相同的文件类型 我想要字符点 路线 但尚未取得任何成功 据我了解 ISAPI 处理程序可能会导致与此相关的问题 我只是不确定如何添加和排除以允许 ASP NET 处理此路由 routes Map
  • jQuery ajax json 响应的长度未定义且数据不正确

    我试图获取一个在服务器端转换为 json 对象的字典对象 以及正确的内容类型标头 但由于某种原因 即使我可以访问部分数据 其他部分也不会显示up 和 jquery 中的 json 对象的长度等于 0 这是我的 jquery 调用 ajax
  • 什么是 __main__.py?

    是什么 main py文件 我应该在其中放入什么样的代码 什么时候应该有一个 通常 Python 程序是通过在命令行上命名 py 文件来运行的 python my program py 您还可以创建一个充满代码的目录或 zip 文件 并包含
  • Antlr 语法生成无效的 C# 代码

    我正在尝试使用 ANTLR 和 StringTemplate 库开发一个 C 代码生成器 AntlrWorks 可以生成 C 解析器和词法分析器文件 而不会报告任何错误 但是 c 解析器代码无效 无法在 Visual Studio 中编译
  • Celery 3.0.1 中的框架错误

    我最近从 2 3 0 升级到 Celery 3 0 1 所有任务都运行良好 很遗憾 我经常收到 帧错误 异常 我还运行主管来重新启动线程 但由于这些线程从未真正被杀死 主管无法知道 celery 需要重新启动 有没有人见过这个 2012 0
  • 在 AWS Code Pipeline 中使用 docker compose 时出错

    我正在使用 AWS Code Pipeline 部署我的 dockerized Django 应用程序 但遇到了一些 Docker 错误 error Service proxy failed to build toomanyrequests
  • 如果满足特定条件,则停止沿特定深度的 boost::depth_first_search

    我在用着BGL http boost org doc libs 1 45 0 libs graph doc table of contents html来存储我的 DAG 顶点有状态 考虑到其中一个顶点的状态发生变化 我想更新依赖顶点 我可
  • 用于格式化一系列单元格并根据 Google 电子表格中的日期插入特定文本的脚本

    我有一个规划器类型的 Google 电子表格 其中每天有 8 10 个用户添加数据 当我向单元格添加日期时 我希望对该日期之后同一行中的所有单元格进行格式化并添加类似 ENDED 的文本值 目前 我正在使用条件格式和 ArrayFormul
  • -[NSRangeException raise] 上的符号异常断点

    在 Xcode 中添加符号断点为您提供了一个示例模板 NSException raise 我想做同样的事情但是具体来说 on NSRangeException raise 原因是我想断点only关于特定数组边界异常 例如 Terminati
  • 如何使用 Traefik 进行 WebSocket 后端

    我正在尝试为 WebSocket 应用程序配置 Traefik 我只是尝试在 docker 上使用一个简单的 WS 应用程序 https hub docker com r jmalloc echo server https hub dock
  • 过滤空手道测试响应对象以获得子列表?

    鉴于此功能文件 Feature test Scenario filter response def response a a b a c a d ab e ab f ab g ac h ac i ac
  • 建模:Xml 与关系数据库

    我想知道是否有最佳实践来决定何时应使用 XML 对系统进行建模以及何时应使用关系数据库进行建模 我知道您可以将 XML 存储在数据库中 但是对系统进行建模之间存在巨大差异使用标准化数据库表并使用 XML 模式对系统进行建模 为了具体起见 假
  • 从 rpy2 传递到 R 的什么对象?

    我无法使以下代码工作 尽管我没有看到此错误在 R 中严格工作 from rpy2 robjects packages import importr from rpy2 import robjects import numpy as np f
  • R 中的 Markdown 表到数据框

    有多种方法可以将数据框转换为 Markdown 表 但是 给定 Markdown 表 如何转换回数据帧 给定一个表格 Table Header Second Header Table Cell Cell 2 Cell 3 Cell 4 或者