【问题标题】:How to simplify the codes of a list in one line in R?如何在R中的一行中简化列表的代码?
【发布时间】:2019-08-01 05:28:25
【问题描述】:

我有一个包含基因符号加入的微阵列平台文本文件列表。我用下面的代码修剪基因符号。

p[[1]]<- data.frame(sapply(p[[1]], function(x) sub("/.*", "", x)))
p[[1]]<- data.frame(sapply(p[[1]], function(x) sub("-.*", "", x)))
p[[1]]<- data.frame(sapply(p[[1]], function(x) sub("\\..*", "", x)))
p[[1]]<- data.frame(sapply(p[[1]], function(x) sub("\\s", "", x)))
p[[2]]<- data.frame(sapply(p[[2]], function(x) sub("/.*", "", x)))
p[[2]]<- data.frame(sapply(p[[2]], function(x) sub("-.*", "", x)))
p[[2]]<- data.frame(sapply(p[[2]], function(x) sub("\\..*", "", x)))
p[[2]]<- data.frame(sapply(p[[2]], function(x) sub("\\s", "", x)))

如何将这些代码简化为两行? 非常感谢您的任何想法。

【问题讨论】:

  • 如果您提出问题 [stackoverflow.com/questions/5963269/…,您会得到更好的答案。您还可以定义一个函数来存储您的步骤,这样您就不必维护这么多重复的代码行。

标签: r list function sapply


【解决方案1】:

使用正则表达式的管道运算符,它等同于逻辑OR

p[[1]] <- data.frame(sapply(p[[1]], function(x) sub("/.*|-.*|\\..*|\\s", "", x)))

p[[2]] <- data.frame(sapply(p[[2]], function(x) sub("/.*|-.*|\\..*|\\s", "", x)))

【讨论】:

    猜你喜欢
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    • 2023-01-22
    • 2018-12-09
    • 2022-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多