我想用正则表达式来挑出多维单元中的单元,并将其输出为SI单元字符列表。将多维SI单元拆分为单个单元并列出它们
例如,拆分3种尺寸的单元:kg/h/ml
或kg h-1ml-1
此'kg'
'h'
'ml'
。
因此,分隔符总是前面或后面的空格,之后的-1
或之前的/
。有时候我也会得到一个.
,那是在一个单位之前。
这意味着字符实际上并不重要,只要分隔符被识别。
我提供的n维“单元”的示例列表(在这种情况下,3):
eggie <- c('kg/h/ml', 'mg h-1kPa-1', 'kg h-1 l-1',
'kg /h /ml', 'kg/h/ml', '% /h.ml')
输出应提供具有n个列的矩阵(在此情况下,3),否则在kgh-1l-1
等第一个和第二个单元之间没有分隔符的情况下输出错误。
更新。为了提供有关“错误”的更多信息,因为我已经询问了它 - 如果n是3,但输出为列表中的任何字符串吐出2(或更少)单位,则它不应该输出矩阵在这种情况下。我大概可以编写这部分函数,但是如果任何人都可以让错误消息调出错误的位置,那将是非常棒的(因为这会让我老掉牙,但是其他人,秒)。
[,1] [,2] [,3]
[1,] "kg" "h" "ml"
[2,] "mg" "h" "kPa"
[3,] "kg" "h" "l"
[4,] "kg" "h" "ml"
[5,] 'kg" "h" "ml"
[6,] "%" "h" "ml"
我已经通过在this教程以及图,它可能需要含有的gsub
和strsplit
的组合的功能消失(I可能是错误的共)。但这就像为我学习一门全新的语言。
任何帮助(或指出正确的资源来弄清楚)非常感谢。
可以ü显示完整的预期输出 – akrun
这里是一个'基R'方法函数read.table'(文本= GSUB(“[^%[:阿尔法:]]“”“”,eggie),header = FALSE)' – akrun
如果'kgh-1l-1'在输入中,您没有指定它的外观。你的意思是你根本不需要矩阵吗? –