如何从R中的字符串中提取数字?

张正
names(score)
 [1] "(Intercept)"              "aado2_calc(20,180]"       "aado2_calc(360,460]"     
 [4] "aado2_calc(460,629]"      "albumin[1,1.8]"           "albumin(1.8,2.2]"        
 [7] "albumin(2.2,2.8]"         "aniongap(15,18]"          "aniongap(18,20]"         
[10] "aniongap(20,22]"          "aniongap(22,25]"          "aniongap(25,49]"    

我想提取括号内的两个数字(不需要括号外的数字),并且有“(”或“ [”。第一个数字将分配给对象“ low”,第二个将分配给“ high”。

r2evans
scorenames <- c(
  "(Intercept)"              ,"aado2_calc(20,180]"       ,"aado2_calc(360,460]"     
 ,"aado2_calc(460,629]"      ,"albumin[1,1.8]"           ,"albumin(1.8,2.2]"        
 ,"albumin(2.2,2.8]"         ,"aniongap(15,18]"          ,"aniongap(18,20]"         
 ,"aniongap(20,22]"          ,"aniongap(22,25]"          ,"aniongap(25,49]"
)

第一步可能是提取“括号” -delimiters内的所有内容(包括()[]和逗号,)。

mat <- regmatches(scorenames,
                  gregexpr("(?<=[\\[\\(,])[0-9.]+(?=[\\]\\),])", scorenames, perl = TRUE))
str(mat)
# List of 12
#  $ : chr(0) 
#  $ : chr [1:2] "20" "180"
#  $ : chr [1:2] "360" "460"
#  $ : chr [1:2] "460" "629"
#  $ : chr [1:2] "1" "1.8"
#  $ : chr [1:2] "1.8" "2.2"
#  $ : chr [1:2] "2.2" "2.8"
#  $ : chr [1:2] "15" "18"
#  $ : chr [1:2] "18" "20"
#  $ : chr [1:2] "20" "22"
#  $ : chr [1:2] "22" "25"
#  $ : chr [1:2] "25" "49"

从这里,我们可以看到(1)第一个是有问题的(不足为奇,您需要在这里弄清楚自己想要什么),(2)其余的看起来都正确。

这是处理此列表的一种粗略方法。这是非常信任且幼稚的...您可能应该添加检查以确保列表的长度为2,以确保所有内容都能正确转换(也许在tryCatch),等等。

newnames <- lapply(mat, function(m) {
  if (! length(m)) return(list(low = NA, high = NA))
  setNames(as.list(as.numeric(m)), nm = c("low", "high"))
})
str(newnames)
# List of 12
#  $ :List of 2
#   ..$ low : logi NA
#   ..$ high: logi NA
#  $ :List of 2
#   ..$ low : num 20
#   ..$ high: num 180
#  $ :List of 2
#   ..$ low : num 360
#   ..$ high: num 460
# ...snip...

您可以使用以下命令将其转换为data.frame:

head(do.call(rbind.data.frame, newnames))
#     low  high
# 1    NA    NA
# 2  20.0 180.0
# 3 360.0 460.0
# 4 460.0 629.0
# 5   1.0   1.8
# 6   1.8   2.2

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从R中的格式字符串中提取数字

来自分类Dev

从R中的格式字符串中提取数字

来自分类Dev

R:从字符串中提取数字

来自分类Dev

如何从C中的字符串中提取数字

来自分类Dev

如何从C中的字符串中提取数字

来自分类Dev

如何在C ++中从字符串中提取数字

来自分类Dev

如何从字符串中提取数字

来自分类Dev

如何从字符串中提取数字

来自分类Dev

如何从字符串中提取数字

来自分类Dev

如何从字符串中提取数字

来自分类Dev

如何从字符串中提取数字

来自分类Dev

如何从R中的字符中提取数字

来自分类Dev

如何从BATCH中的字符串中提取数字并获取所有数字的总数?

来自分类Dev

从R中的字符串中提取和拆分数字和字符

来自分类Dev

从字符串中提取数字(如果在R中紧跟某些字符)

来自分类Dev

从R中的字符串中提取和拆分数字和字符

来自分类Dev

R:从字符串中提取特定数字

来自分类Dev

gsub R从字符串中提取数字

来自分类Dev

R:从字符串中提取特定数字

来自分类Dev

R 从字符串中提取 6 位数字

来自分类Dev

如何从字符串中提取多位数字?

来自分类Dev

Delphi-如何从字符串中提取数字?

来自分类Dev

如何从字符串中提取所有数字

来自分类Dev

如何仅从字符串中提取数字?

来自分类Dev

AppleScript:如何从字符串中提取数字?

来自分类Dev

如何从字符串中提取数字集合?

来自分类Dev

如何从字符串中提取“单词形式的数字”

来自分类Dev

如何从字符串中提取多个数字?

来自分类Dev

如何从URL字符串Ruby中提取数字