从 R 中的 yaml 中删除空元素

问题描述 投票:0回答:1

我想从 R 中的 YAML 中删除一些空元素。空元素可以在 yaml 中显示为

[]
。我找到了带有 ymlthis
 选项的 
yml_discard(~is_yml_blank(.x))
 包。这应该从 yaml 中删除空元素,但这不起作用。这是一个可重现的示例:

library(yaml)
library(ymlthis)
z <- yaml.load(
  "tree:
  format: newick
tracks:
  - class: colorstrip
    rel_height: []
    title: ")

y <- as.yaml(z)

y |>
  yml_discard(~is_yml_blank(.x))
#> ---
#> tree:
#>   format: newick
#> tracks:
#> - class: colorstrip
#>   rel_height: []
#>   title: null
#> ---

创建于 2024-11-08,使用 reprex v2.1.1

如您所见,它不会删除空值。我的预期输出应该如下所示:

#> ---
#> tree:
#>   format: newick
#> tracks:
#> - class: colorstrip
#> ---

预期输出显示应删除没有值的元素。所以我想知道是否有人知道如何删除 R 中 YAML 文件中的空元素?

r yaml
1个回答
0
投票

鉴于您有

z
,这是一个
list
,我似乎比使用
y
更容易使用它,这是
character
向量。例如,使用
rrapply::rapply()
修剪任何空元素:

rrapply::rrapply(z, \(x) !is.null(x), how = "prune") |>
    as.yaml()

返回:

tree:
  format: newick
tracks:
- class: colorstrip
© www.soinside.com 2019 - 2024. All rights reserved.