R-查找单个数字中重复位数的最大值

R-查找单个数字中重复位数的最大值,r,R,是否有一个函数可以返回给定数字的最大顺序重复位数 所需输出是以下数字的“Num_repeats”部分: Number Num_repeats 18.25328700000000026193 9 18.09606604359100042883 3 17.95982782048729065186 0 如果是字符列,我们可以使用strsplit进行拆分,并使用rle提取相邻重复元素的length,使用max返回“max”值 df1$Num_r

是否有一个函数可以返回给定数字的最大顺序重复位数

所需输出是以下数字的“Num_repeats”部分:

Number                     Num_repeats
18.25328700000000026193    9
18.09606604359100042883    3
17.95982782048729065186    0

如果是字符列,我们可以使用
strsplit
进行拆分,并使用
rle
提取相邻重复元素的
length
,使用
max
返回“max”值

df1$Num_repeats <- sapply(strsplit(df1$Number, "[.]|"),
           function(x) with(rle(x), max(lengths)))
df1$Num_repeats[df1$Num_repeats==1] <- 0
df1
#                    Number Num_repeats
#1 18.25328700000000026193           9
#2 18.09606604359100042883           3 
#3 17.95982782048729065186           0

df1$Num\u repeats如果它是一个字符列,我们可以使用
strsplit
进行拆分,并使用
rle
提取相邻重复元素的
长度,使用
max
返回“max”值

df1$Num_repeats <- sapply(strsplit(df1$Number, "[.]|"),
           function(x) with(rle(x), max(lengths)))
df1$Num_repeats[df1$Num_repeats==1] <- 0
df1
#                    Number Num_repeats
#1 18.25328700000000026193           9
#2 18.09606604359100042883           3 
#3 17.95982782048729065186           0

df1$Num\u重复另一个基本R解决方案

df <- within(df,
             Num_repeats <- sapply(gsub("\\D","",Number,perl = TRUE),
                                   function(x) (u<-max(rle(utf8ToInt(x))$lengths))*(u>1)))
数据

df <- structure(list(Number = c("18.25328700000000026193", "18.09606604359100042883", 
"17.95982782048729065186")), row.names = c(NA, -3L), class = "data.frame")

df另一个基本R解决方案

df <- within(df,
             Num_repeats <- sapply(gsub("\\D","",Number,perl = TRUE),
                                   function(x) (u<-max(rle(utf8ToInt(x))$lengths))*(u>1)))
数据

df <- structure(list(Number = c("18.25328700000000026193", "18.09606604359100042883", 
"17.95982782048729065186")), row.names = c(NA, -3L), class = "data.frame")

df“Number”中是否有字符列不——Number在我的datasetokay中是一个数字列,那么就很难用
as.character
和使用
strsplit
复制可以转换为字符的数字的精度了。是的,我现在很遗憾地意识到了这一点——否则你的解决方案就是完美的!如果我认为它是数字的,值会在我的系统上改变。最好使用
dput
来显示示例“Number”中是否有字符列否--Number在我的datasetokay中是一个数字列,那么就很难复制您可以使用
as.character
转换为字符的数字的精度,并使用
strsplit
是,我现在很难过地意识到,否则你的解决方案是完美的!如果我认为它是数字的,值会在我的系统上改变。最好使用
dput
来显示示例我认为这可以简化一点,因为不会有两个重复点:
sapply(x,函数(i){tmp1)}
我认为这可以简化一点,因为不会有两个重复点:
sapply(x,函数(i){tmp1)}