在R中查找特定表达式

时间:2017-11-14 04:47:08

标签: r

afn(a)
1       pwr_p08_mgr1       
2       pwr_p08_asd
3       pwr_p11_mgr1
4       pwr_p11_mgr4
5       pwr_p10_asd
6       scribbles
7       abc_de_p11_wer
8       red-p08

我有一个函数会返回一个元素列表,就像我上面标注的那样。我想对a的所有可能值重复这一点。有150种不同的价值观。对于每个值,我希望它返回3个东西。它们可以是3个独立的功能,也可以是1个功能。我希望得到句号,并计算a的每个值。对于所示的示例,时段08出现3次,10次和11次3次。我需要的另一件事是a(有150个)的值的分数,每个句点(01-50)都存在。

3 个答案:

答案 0 :(得分:2)

如果我们提取第一个数字匹配并找到频率

library(stringr)
table(str_extract(afn_a, "\\d+"))

答案 1 :(得分:1)

如果你的角色矢量具有这种模式,这将有效:" XXX_p [0-9] XXX" 例如:此字符串的模式' pwr_p08_mgr1'是' XXX_X08_XXX1'。数字可能出现在第一个下划线之前或之后,第一个数字值将作为返回值。

afn_a <-  c( 'pwr_p08_mgr1', 'pwr_p08_asd', 'pwr_p11_mgr1',
             'pwr_p11_mgr4', 'pwr_p10_asd', 'scribbles',
             'abc_de_p11_wer', 'red-p08')

mytab <- table( na.omit( unlist( lapply( strsplit( gsub( "[^0-9_]", "", afn_a), split = "_"),
        function( x ){
          x[ x != "" ][1]
        }) ) ) ) 
mytab
# 08 10 11 
# 3  1  3 
mytab/150
# 08          10          11 
# 0.020000000 0.006666667 0.020000000 

答案 2 :(得分:0)

您能举例说明您想要的输入/输出吗?

你看过grep函数了吗?我想如果你在循环中做一个你想要的所有值,它可能会工作得很好。 https://www.rdocumentation.org/packages/base/versions/3.4.1/topics/grep https://www.r-bloggers.com/how-to-write-the-first-for-loop-in-r/