gpt4 book ai didi

从 R 中的表(字符)中删除 NA 字符串

转载 作者:行者123 更新时间:2023-12-05 02:10:42 30 4
gpt4 key购买 nike

如何在 R 中删除一个简单数据框中的 NA 字符串,如下图所示,它由一列组成?

head(test)
Column1
[1] "Gene1 Gene2 Gene3 NA NA NA NA"
[2] "Gene41 NAGene218 GeneX NA"
[3] "Gene19 GeneNA NA NA NA NA NA"

有些基因以“NA”开头或结尾,因此为了避免删除这些 NA,gsub 正则表达式必须指定 NA 在字符串中的位置...类似于: test2 <- gsub('^ NA$', "", test$Column1) , 与 ^表示“NA”必须在开头并且 $在字符串的末尾......我确信这很简单,但我不明白我做错了什么? (因为我对这些正则表达式符号不是很熟悉)

[更新] - 期望的输出

head(test2)
Column1
[1] "Gene1 Gene2 Gene3"
[2] "Gene41 NAGene218 GeneX"
[3] "Gene19 GeneNA"

最佳答案

你可以使用

test$Column1 <- gsub("^NA(?:\\s+NA)*\\b\\s*|\\s*\\bNA(?:\\s+NA)*$", "", test$Column1)

参见 regex demo

详情

  • ^NA(?:\s+NA)*\b\s* - 备选方案 1:
    • ^ - 字符串的开始
    • NA - NA 字符串
    • (?:\s+NA)* - 0 次或多次重复 1+ 个空格和 NA 文本
    • \b - 确保有单词边界(不应出现 NAGene 匹配)
    • \s* - 0+ 个空格
  • | - 或
  • \s*\bNA(?:\s+NA)*$ - 备选方案 2:
    • \s* - 0+ 个空格
    • \b - 确保有单词边界(不应出现 GeneNA 匹配)
    • NA - NA 字符串
    • (?:\s+NA)* - 0 次或多次重复 1+ 个空格和 NA 文本
    • $ - 字符串结尾。

关于从 R 中的表(字符)中删除 NA 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58416017/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com