R 从cut中提取断点
R 从cut中提取断点,r,R,cut函数的文档提供了“提取断点的一种方法” aaa1)阅读。表格我不认为有任何直接的目的,但这是简短的: read.table(text = gsub("[^.0-9]", " ", labs), col.names = c("lower", "upper")) 给出此data.frame: lower upper 1 0.994 3.00 2 3.000 5.00 3 5.000 7.01 2)gsubfn::Straply这是另一种可能性: library(gsubfn)
cut
函数的文档提供了“提取断点的一种方法”
aaa1)阅读。表格我不认为有任何直接的目的,但这是简短的:
read.table(text = gsub("[^.0-9]", " ", labs), col.names = c("lower", "upper"))
给出此data.frame:
lower upper
1 0.994 3.00
2 3.000 5.00
3 5.000 7.01
2)gsubfn::Straply这是另一种可能性:
library(gsubfn)
strapply(labs, "[.0-9]+", as.numeric, simplify = rbind)
给出该矩阵:
[,1] [,2]
[1,] 0.994 3.00
[2,] 3.000 5.00
[3,] 5.000 7.01
3)gsubfn::read.pattern和另一个:
library(gsubfn)
read.pattern(text = labs, pattern = ".(.+),(.+).", col.names = c("lower", "upper"))
给予:
lower upper
1 0.994 3.00
2 3.000 5.00
3 5.000 7.01
下面是一个使用strsplit()的解决方案
:
您可以将正则表达式简化一点:
为.numeric(sub('.(.+),.+','\\1',labs));as.numeric(sub(“.+,(.+).”,“\\1',labs))
回答得不错。如果有人有高数字,它将使用科学记数法,e
将破坏格式。。。所以改用这个正则表达式:gsub(pattern=“[\\]\\\(),]”,replacement=“”,x=labs,perl=TRUE)
lower upper
1 0.994 3.00
2 3.000 5.00
3 5.000 7.01
sapply(strsplit(labs, "\\(|,|]"), function(x) as.numeric(x[-1]))
# [,1] [,2] [,3]
# [1,] 0.994 3 5.00
# [2,] 3.000 5 7.01