首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Nextflow中获得元组通道中的第一项

如何在Nextflow中获得元组通道中的第一项
EN

Stack Overflow用户
提问于 2022-08-02 09:04:05
回答 1查看 203关注 0票数 1

示例:

代码语言:javascript
复制
#!/usr/bin/env nextflow
nextflow.enable.dsl=2

workflow 
{   
    days = Channel.of("Sat", "Sun", "Mon")
    tasks = Channel.of("Cleaning", "Cooking")    
    tasks_days = tasks.combine(days)
    tasks_days.view()

}

当前产出:

代码语言:javascript
复制
$ nextflow run bench.nf 
N E X T F L O W  ~  version 22.04.0
Launching `bench.nf` [shrivelled_avogadro] DSL2 - revision: fb7c91b512
[Cleaning, Sat]
[Cooking, Sat]
[Cleaning, Sun]
[Cooking, Sun]
[Cleaning, Mon]
[Cooking, Mon]

我感兴趣的是如何创建新的tasks_days频道,其中包含第一个元素清洗,烹饪,清洗,烹饪,清洗,烹饪

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-02 11:39:11

您可以使用地图操作符和闭包来完成以下操作:

代码语言:javascript
复制
tasks_days = tasks.combine(days).map { it.first() }

请注意,上面将抛出一个给定空列表的NoSuchElementException。如果您希望在列表为空时使用null值,只需使用:

代码语言:javascript
复制
tasks_days = tasks.combine(days).map { it[0] }

还请注意,Groovy闭包支持参数解包,因此在最简单的情况下,您可以使用以下方法获得第一个元素:

代码语言:javascript
复制
tasks_days = tasks.combine(days).map { task, day -> task }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73204784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档