R-计算管道列表中的项目数

R-计算管道列表中的项目数,r,count,aggregate,R,Count,Aggregate,我有一个列,列中有标识符的管道列表 Identifier O75496|P62979|P62987|P0CG47|P0CG48|O00487|P25786 P28066|P60900|O14818|P20618|P40306 Q99436|P28062|P28065 P28062|P28065|P62191|P35998|P17980|P43686 如何在每行中生成一列标识符的编号? 输出以读取如下内容 Identifier

我有一个列,列中有标识符的管道列表

Identifier
O75496|P62979|P62987|P0CG47|P0CG48|O00487|P25786
P28066|P60900|O14818|P20618|P40306
Q99436|P28062|P28065
P28062|P28065|P62191|P35998|P17980|P43686
如何在每行中生成一列标识符的编号? 输出以读取如下内容

Identifier                                          Count
O75496|P62979|P62987|P0CG47|P0CG48|O00487|P25786    7
P28066|P60900|O14818|P20618|P40306                  5
Q99436|P28062|P28065                                3
P28062|P28065|P62191|P35998|P17980|P43686           6
提前谢谢

sapply(strsplit(df$Identifier, '[|]'), length)
对于独特的情况,只需添加
unique
功能

sapply(strsplit(df$Identifier, '[|]'), function(i) length(unique(i)))

没有拆分的基本R选项将是

df1$Count <- nchar(gsub("[^|]", "", df1$Identifier)) + 1L
df1$Count
#[1] 7 5 3 6

length(strsplit(a,“\\\\”[[1]])
post输出
dput(df)
Try
stringi::striu count\u fixed(df$Identifier,“\\\”)+1L
可能
长度(strsplit(as.character(df$Identifier),“\\”,fixed=TRUE))
会更有效。您可能需要转换为字符。谢谢您的回复。我尝试了几种不同的答案,它们都像我预期的那样有效。抱歉,如果我没有找到以前类似问题的重复答案如果我只想计算每个管道列表的唯一条目,我可以向上述解决方案添加什么参数?@Beej在这种情况下
sapply(strsplit(df1$Identifier,function(x)length(unique(x)))
对不起,这对我来说似乎不管用,真是太好了!
sapply(gregexpr("[|]", df1$Identifier), 
      function(x) sum(attr(x, "match.length"))+1)
#[1] 7 5 3 6