gpt4 book ai didi

r - 使用 gsub() 从 R 中的数组中提取数字

转载 作者:行者123 更新时间:2023-12-05 08:25:12 25 4
gpt4 key购买 nike

我想从下面的数组中删除 &. 并只提取数字,

x = as.factor(c(".&.", "0.0119885482338&.&.", ".&2.25880593895", ".&.&.&.&.&.&.&.", ".&0.295142083575&.", "0.708323350364",".&.&0.193766679861",".&.&.&.&7.65239874523E-4&.&."))

我尝试了以下 gsub() 命令:

gsub("[^0-9.E-]","",x)

输出:

".."                     "0.0119885482338.."      ".2.25880593895"         
"........"
".0.295142083575." "0.708323350364" "..0.193766679861"
"....7.65239874523E-4.."

更新上述 gsub 命令的任何建议,以便输出如下所示:

"" "0.0119885482338" "2.25880593895" "" "0.295142083575" 
"0.708323350364" "0.193766679861" "7.65239874523E-4"

最佳答案

你可以使用

> sub("^.*?(?:([-+]?\\d*\\.?\\d+(?:[eE][-+]?\\d+)?).*|$)","\\1",x)
[1] "" "0.0119885482338" "2.25880593895" "" "0.295142083575" "0.708323350364" "0.193766679861" "7.65239874523E-4"

参见 regex demo .

详细信息:

  • ^ - 字符串的开始
  • .*? - 任何文本,尽可能短
  • (?: - 非捕获组的开始:
    • ([-+]?\\d*\\.?\\d+(?:[eE][-+]?\\d+)?) - 第 1 组(\1): number pattern
    • .* - 字符串的其余部分
  • |
    • $ - 字符串结尾
  • ) - 非捕获组结束。

查看 online R demo :

x=as.factor(c(".&.", "0.0119885482338&.&.", ".&2.25880593895", ".&.&.&.&.&.&.&.", ".&0.295142083575&.", "0.708323350364",".&.&0.193766679861",".&.&.&.&7.65239874523E-4&.&."))
sub("^.*?(?:([-+]?\\d*\\.?\\d+(?:[eE][-+]?\\d+)?).*|$)","\\1",x)
## => [1] "" "0.0119885482338" "2.25880593895" ""
## [5] "0.295142083575" "0.708323350364" "0.193766679861" "7.65239874523E-4"

关于r - 使用 gsub() 从 R 中的数组中提取数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67456482/

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