- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 R/tidyverse 将整洁的表(例如下面的示例)转换为嵌套列表。使用一些 tidyverse 魔法,我能够将其转换为深度为三的嵌套列表,但我不知道如何将其嵌套得更深。
采用以下示例输入:
library(tidyverse)
library(stringi)
n_patient = 2
n_samples = 3
n_readgroup = 4
n_mate = 2
df = data.frame(patient = rep(rep(LETTERS[1:n_patient], n_samples),2),
sample = rep(rep(seq(1:n_samples), each = n_patient),2),
readgroup = rep(stri_rand_strings(n_patient * n_samples * n_readgroup, 6, '[A-Z]'),2),
mate = rep(1:n_mate, each = n_patient * n_samples * n_readgroup)) %>%
mutate(file = sprintf("%s.%s.%s_%s", patient, sample, readgroup, mate)) %>%
arrange(file)
json = df %>%
nest(-patient, .key = samples) %>%
mutate(samples = map(samples, nest, -sample, .key=readgroups))
jsonlite::toJSON(json, pretty = T)
例如看起来像这样
> head(df)
patient sample readgroup mate file
1 A 1 FCSDRJ 1 A.1.FCSDRJ_1
2 A 1 FCSDRJ 2 A.1.FCSDRJ_2
3 A 1 IAXDPR 1 A.1.IAXDPR_1
4 A 1 IAXDPR 2 A.1.IAXDPR_2
5 A 1 MLDBKZ 1 A.1.MLDBKZ_1
6 A 1 MLDBKZ 2 A.1.MLDBKZ_2
输出如下所示:
[
{
"patient": "A",
"samples": [
{
"sample": 1,
"readgroups": [
{
"readgroup": "FCSDRJ",
"mate": 1,
"file": "A.1.FCSDRJ_1"
},
{
"readgroup": "FCSDRJ",
"mate": 2,
"file": "A.1.FCSDRJ_2"
},
{
"readgroup": "IAXDPR",
"mate": 1,
"file": "A.1.IAXDPR_1"
},
{
"readgroup": "IAXDPR",
"mate": 2,
"file": "A.1.IAXDPR_2"
},
{
"readgroup": "MLDBKZ",
"mate": 1,
"file": "A.1.MLDBKZ_1"
},
{
"readgroup": "MLDBKZ",
"mate": 2,
"file": "A.1.MLDBKZ_2"
},
{
"readgroup": "OMTWHK",
"mate": 1,
"file": "A.1.OMTWHK_1"
},
{
"readgroup": "OMTWHK",
"mate": 2,
"file": "A.1.OMTWHK_2"
}
]
},
{
"sample": 2,
"readgroups": [
{
"readgroup": "BHAEFA",
"mate": 1,
"file": "A.2.BHAEFA_1"
},
{
"readgroup": "BHAEFA",
"mate": 2,
"file": "A.2.BHAEFA_2"
},
{
"readgroup": "DIBRHT",
"mate": 1,
"file": "A.2.DIBRHT_1"
},
{
"readgroup": "DIBRHT",
"mate": 2,
"file": "A.2.DIBRHT_2"
},
{
"readgroup": "HHMOSV",
"mate": 1,
"file": "A.2.HHMOSV_1"
},
{
"readgroup": "HHMOSV",
"mate": 2,
"file": "A.2.HHMOSV_2"
},
{
"readgroup": "KJXTPN",
"mate": 1,
"file": "A.2.KJXTPN_1"
},
{
"readgroup": "KJXTPN",
"mate": 2,
"file": "A.2.KJXTPN_2"
}
]
},
{
"sample": 3,
"readgroups": [
{
"readgroup": "CHXJMM",
"mate": 1,
"file": "A.3.CHXJMM_1"
},
{
"readgroup": "CHXJMM",
"mate": 2,
"file": "A.3.CHXJMM_2"
},
{
"readgroup": "MDWRBS",
"mate": 1,
"file": "A.3.MDWRBS_1"
},
{
"readgroup": "MDWRBS",
"mate": 2,
"file": "A.3.MDWRBS_2"
},
{
"readgroup": "RHHKGK",
"mate": 1,
"file": "A.3.RHHKGK_1"
},
{
"readgroup": "RHHKGK",
"mate": 2,
"file": "A.3.RHHKGK_2"
},
{
"readgroup": "VVVJFD",
"mate": 1,
"file": "A.3.VVVJFD_1"
},
{
"readgroup": "VVVJFD",
"mate": 2,
"file": "A.3.VVVJFD_2"
}
]
}
]
},
{
"patient": "B",
"samples": [
{
"sample": 1,
"readgroups": [
{
"readgroup": "QAFCOS",
"mate": 1,
"file": "B.1.QAFCOS_1"
},
{
"readgroup": "QAFCOS",
"mate": 2,
"file": "B.1.QAFCOS_2"
},
{
"readgroup": "TJYYMQ",
"mate": 1,
"file": "B.1.TJYYMQ_1"
},
{
"readgroup": "TJYYMQ",
"mate": 2,
"file": "B.1.TJYYMQ_2"
},
{
"readgroup": "YMHWOI",
"mate": 1,
"file": "B.1.YMHWOI_1"
},
{
"readgroup": "YMHWOI",
"mate": 2,
"file": "B.1.YMHWOI_2"
},
{
"readgroup": "ZOMSBU",
"mate": 1,
"file": "B.1.ZOMSBU_1"
},
{
"readgroup": "ZOMSBU",
"mate": 2,
"file": "B.1.ZOMSBU_2"
}
]
},
{
"sample": 2,
"readgroups": [
{
"readgroup": "CZWHXP",
"mate": 1,
"file": "B.2.CZWHXP_1"
},
{
"readgroup": "CZWHXP",
"mate": 2,
"file": "B.2.CZWHXP_2"
},
{
"readgroup": "MIMMNH",
"mate": 1,
"file": "B.2.MIMMNH_1"
},
{
"readgroup": "MIMMNH",
"mate": 2,
"file": "B.2.MIMMNH_2"
},
{
"readgroup": "RCWMQY",
"mate": 1,
"file": "B.2.RCWMQY_1"
},
{
"readgroup": "RCWMQY",
"mate": 2,
"file": "B.2.RCWMQY_2"
},
{
"readgroup": "WDMLHE",
"mate": 1,
"file": "B.2.WDMLHE_1"
},
{
"readgroup": "WDMLHE",
"mate": 2,
"file": "B.2.WDMLHE_2"
}
]
},
{
"sample": 3,
"readgroups": [
{
"readgroup": "DWITMU",
"mate": 1,
"file": "B.3.DWITMU_1"
},
{
"readgroup": "DWITMU",
"mate": 2,
"file": "B.3.DWITMU_2"
},
{
"readgroup": "GCLWMA",
"mate": 1,
"file": "B.3.GCLWMA_1"
},
{
"readgroup": "GCLWMA",
"mate": 2,
"file": "B.3.GCLWMA_2"
},
{
"readgroup": "QZZKQB",
"mate": 1,
"file": "B.3.QZZKQB_1"
},
{
"readgroup": "QZZKQB",
"mate": 2,
"file": "B.3.QZZKQB_2"
},
{
"readgroup": "WJKGRB",
"mate": 1,
"file": "B.3.WJKGRB_1"
},
{
"readgroup": "WJKGRB",
"mate": 2,
"file": "B.3.WJKGRB_2"
}
]
}
]
}
]
这很棒,除了我还想按“mate”嵌套(理论上可以按任意数量的变量嵌套,没有任何深度限制)。有什么建议如何实现这一点吗?
谢谢!
最佳答案
第一步是注意您正在向后执行,这会提供与您相同的输出,但更简单:
json2 <- df %>% nest(-(1:2),.key=readgroups) %>% nest(-1,.key=samples)
然后我们可以扩展它:
json3 <- df %>% nest(-(1:3),.key=mate) %>% nest(-(1:2),.key=readgroups) %>% nest(-1,.key=samples)
jsonlite::toJSON(json3,pretty=T)
输出:
[
{
"patient": "A",
"samples": [
{
"sample": 1,
"readgroups": [
{
"readgroup": "FUPEYR",
"mate": [
{
"mate": 1,
"file": "A.1.FUPEYR_1"
},
{
"mate": 2,
"file": "A.1.FUPEYR_2"
}
...
如果有必要,概括它:
vars <- names(df)[-1] # or whatever variables you want to nest, order matters!
var_pairs <- map((length(vars)-1):1,~vars[.x:(.x+1)])
json4 <- reduce(var_pairs,~{nm<-.y[1];nest(.x,.y,.key=!!enquo(nm))},.init=df)
jsonlite::toJSON(json4,pretty=T)
输出:
[
{
"patient": "A",
"sample": [
{
"sample": 1,
"readgroup": [
{
"readgroup": "FUPEYR",
"mate": [
{
"mate": 1,
"file": "A.1.FUPEYR_1"
},
{
"mate": 2,
"file": "A.1.FUPEYR_2"
}
...
关于r - 使用 R 和 tidyverse 将 tidy 表转换为深度嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50477156/
使用 HTML5 中的新文档类型和元素,您如何获得 xdmp:tidy()识别 HTML5 中的那些? 如果我有一个包含以下内容的 html 页面: blah blah 然后尝试类
我有一些想要使用的 Django 模板文件 tidy清理。但是,它插入了我不想要的所有这些文档类型和标题垃圾。主要是,我只是想修复缩进。所有其他的东西都是额外的。 tidy 甚至可以处理像这样的部分文
我正在从 cmdline 使用 clang-tidy clang-tidy readability-implicit-bool-conversion ... " . 这个 clang-tidy 选项有
我有几个项目,我想解析很多标题,但有几个标题我不想用 clang-tidy 解析 我的文件夹层次结构如下 一种\ B\ C\ coco.h
clang-tidy --dump-config 命令产生如下内容: --- Checks: 'clang-diagnostic-*,clang-analyzer-*' Warnin
我正在使用 HTML Tidy,并且使用类似的东西 Link 它使 Link 我如何告诉 Tidy 保持链接的原样? 我的配置: 'output-xhtml' => true, 'numeric-en
我有一个 Maven 项目。当我运行该项目时,我收到错误。错误原因是 Caused by: java.lang.NoSuchMethodError: org.w3c.tidy.Tidy.setHide
我正在尝试从命令提示符运行 Maven 2 中内置的 java 应用程序 在命令提示符下,我执行了“mvn package”并在应用程序的目标文件夹中获取了 jar 然后我做了:- java -cp
我想配置我的 -line-filter= .clang-tidy 中的参数文件而不是在生成命令的 cmake 源文件中。添加 LineFilter文件的 key 只会让我出现“未知 key ”错误。这
我无法让 clang-tidy 读取我的编译数据库。如果我尝试: clang-tidy --config-file ./.clang-tidy -checks=* -p ./target 或 clan
我目前正在使用一个脚本,该脚本使用 tidy library 验证无效的 XML 文件或字符串。 测试其运行的示例代码: #include #include #include #include
命令 clang-tidy --export-fixes=fixes.yml 生成文件 fixes.yml像这样的姿势 --- Diagnostics: - DiagnosticName: mo
是否可以在 clang-tidy 中分析 C/C++ 文件,同时忽略其语法/编译错误? 我有一个很大的文件,有几个编译错误,但我仍然想用 clang-tidy 分析它。 我收到以下错误消息: 20 w
我从官方主页(http://sourceforge.net/projects/curlpas/files/)下载了最新版本(TidyPas_Delphi2010.zip)。 但是令我惊讶的是,单元中充
我在 docker container 中使用 php7 来运行基于 phpdocx 库的服务。它需要安装 tidy 和一些其他扩展并激活才能工作。我已经安装了 php-tidy 但是我收到以下警告。
自从在我们的CI服务器上使用ccache以来,我们发现构建时间方面的瓶颈现在是我们的静态分析过程,其中包括clang-tidy和其他工具。有谁知道用与常规编译器clang-tidy相似的方式来加速cc
我使用 Java 库 Tidy 来清理 html 代码。一些代码包含带有俄文字母的链接。例如 link with Russian letters 我知道必须对“Русский”进行转义,但我从用户那里
如果属性值周围缺少引号,我是否可以设置任何选项来整齐地向我显示警告?目前我运行整洁如下: tidy -xml -e test.html 在 test.html 中: 没有警告,但实际上 XML 需要
对于 C++ 的 HTML 代码,是否有等同于 tidy 的东西?我在互联网上搜索过,但除了用于 tidy 的 C++ 包装器之外,我什么也没找到...我认为关键字 tidy 是让我挂断电话的原因。
在将 xml 加载到 DomDocument 之前,我想使用 PHP Tidy 来确保它有效。 但是,我不希望 Tidy 改变我的格式 - 我只希望它修复标签不平衡等问题。 问题的一个例子可以在这个页
我是一名优秀的程序员,十分优秀!