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)都存在。
答案 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/