Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R gsub应用于少数数据点时出错_R_Regex_Gsub - Fatal编程技术网

R gsub应用于少数数据点时出错

R gsub应用于少数数据点时出错,r,regex,gsub,R,Regex,Gsub,我需要删除序列中不断重复的数字 a b Kor 66.73 > 66.73 > 66.73 > 66.73 > 66.73 > 66.73 > 73.42 > 66.73 > 73.42 > 66.73 > 66.73 > 66.73 > 66.73 > 66.73 > 66.73 我需要像下面这样的输出 a b Kor 66.73 > 66.7

我需要删除序列中不断重复的数字

 a      b
Kor 66.73 > 66.73 > 66.73 > 66.73 > 66.73 > 66.73 > 
        73.42 > 66.73 > 73.42 > 66.73 > 66.73 > 66.73 > 
        66.73 > 66.73 > 66.73
我需要像下面这样的输出

a       b
Kor 66.73 > 66.73 > 66.73 > 66.73 > 66.73 > 66.73 > 
        73.42 > 66.73 > 73.42 > 66.73 > 66.73 > 66.73 > 
        66.73 > 66.73 > 66.73
我需要下面的输出

c= 66.73 > 73.42 > 66.73 > 73.42 > 66.73
但是我在输出中得到了错误

66.73 > 73.42 > 66.73.42 > 66.73
我使用了下面的代码

c$c <- gsub("\\b([\\w\\.]+)( > \\1\\b)+","\\1",c$b,perl = T)

c$c您的
[\\w\\.]+
模式匹配一个或多个数字、字母或点,并且它可以匹配
12.54>中的
54
。您需要确保匹配浮点值,同时使点成为图案的必需部分

你可以用

sapply(str_extract_all(gsub("\\b(\\d+\\.\\d+)(?:\\s+>\\s+\\1\\b)+", "\\1", x), "\\d+\\.\\d+"), paste, collapse=" > ")
## => [1] "66.73 > 73.42 > 66.73 > 73.42 > 66.73"

使用
gsub(\\b(\\d+\\.\\d+)(:\\s+>\\s+\\1\\b)+,“\\1”,x)
删除所有重复的连续浮点数,使用
str\u extract\u all(x1,\\d+\.\\d+”)
可以提取剩下的数字,然后使用
子字符串
粘贴
找到的所有值。

Hi Team,有人能帮我解决这个问题吗?请帮助我们帮助您,使用
dput
获得一段可复制的代码并与我们共享。您好,Wiktor,在执行代码后,我只得到了“”,@Rperfect,那么您除了发布之外还有其他一些输入。拜托,你好,维克托。谢谢你。它正在工作。但是,对于只有一个值(比如97)的少数代码,输出显示为0,而不是097@Rperfect请提供一个带有失败文本的正则表达式。好的,我试试看。但是我可以知道为什么它显示为0吗?