Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >R使用正则表达式替换字符串中空格的第n次出现。

R使用正则表达式替换字符串中空格的第n次出现。
EN

Stack Overflow用户
提问于 2022-10-20 12:07:45
回答 1查看 42关注 0票数 1

我是一个正则表达式的初学者,并且正在处理来自pdf和R的数据。不幸的是,R没有捕获数据中的小数点,所以我需要用句点替换特定的空格。我确实找到了一个解决这个问题的方法,但是我怀疑有一种更有效的方法可以用正则表达式来完成这个任务。下面是一些示例数据,我正在使用的解决方案,以及我想要得到的结果数据集。

代码语言:javascript
运行
AI代码解释
复制
ex<-c("16 7978 38 78 651 42 651 42","25 1967 8 94 225 26 225 26",
      "16 5000 8 00 132 00 132 00", "16 6125 2 00 33 23 33 23")

df<-data.frame(row=1:4,string=ex)
df

row                   string
 1  16 7978 38 78 651 42 651 42
 2  25 1967 8 94 225 26 225 26
 3  16 5000 8 00 132 00 132 00
 4  16 6125 2 00 33 23 33 23

df$tst<-stri_replace_first_fixed(df$string," ",".")
df$rate<-sapply(strsplit(df$tst," ",fixed=T),"[",1)
df$string2<-stri_replace_first_fixed(df$tst,df$rate,"")%>% trimws()
df$tst<-stri_replace_first_fixed(df$string2," ",".")
df$hours<-sapply(strsplit(df$tst," ",fixed=T),"[",1)
df$string3<-stri_replace_first_fixed(df$tst,df$hours,"")%>% trimws()
df$tst<-stri_replace_first_fixed(df$string3," ",".")
df$period_amt<-sapply(strsplit(df$tst," ",fixed=T),"[",1)
df$string4<-stri_replace_first_fixed(df$tst,df$period_amt,"")%>% trimws()
df$tst<-stri_replace_first_fixed(df$string3," ",".")
df$ytd_amt<-sapply(strsplit(df$tst," ",fixed=T),"[",1)


df<-df %>% dplyr::select(-string2,-string3,-tst,-string4)
df
 
  row                     string   rate  hours  period_amt ytd_amt
   1 16 7978 38 78 651 42 651 42 16.7978 38.78     651.42  651.42
   2  25 1967 8 94 225 26 225 26 25.1967  8.94     225.26  225.26
   3  16 5000 8 00 132 00 132 00 16.5000  8.00     132.00  132.00
   4    16 6125 2 00 33 23 33 23 16.6125  2.00      33.23   33.23

在上面的解决方案中,我将第一次出现的空格替换为句点,提取校正的数字,然后从字符串中删除更正的数字。然后迭代地重复这个处理,直到提取出所有的值。正如我所说的,这个解决方案很有效,但在我看来,它看起来相当草率,如果我需要从文本中纠正和提取大量的值,就会很乏味。任何关于在R中实现这一目标的更好方法的建议都将不胜感激。

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-20 12:27:01

这里有个办法。正如@Peter所言,这可能更好地解决小数点缺失的原因,也许这与pdf源有关。

此外,它将取决于源数字格式,例如,如果它有前导零,负号等。

代码语言:javascript
运行
AI代码解释
复制
ex<-c("16 7978 38 78 651 42 651 42","25 1967 8 94 225 26 225 26",
      "16 5000 8 00 132 00 132 00", "16 6125 2 00 33 23 33 23")

df<-data.frame(row=1:4,string=ex)

n <- do.call(rbind, strsplit(gsub("(\\d+) (\\d+)","\\1.\\2",df$string ), " " ))
n <- apply(n, 2, as.numeric)
colnames(n) <- c("rate",  "hours",  "period_amt", "ytd_amt")
df<-cbind(df, n)
df
#>   row                      string    rate hours period_amt ytd_amt
#> 1   1 16 7978 38 78 651 42 651 42 16.7978 38.78     651.42  651.42
#> 2   2  25 1967 8 94 225 26 225 26 25.1967  8.94     225.26  225.26
#> 3   3  16 5000 8 00 132 00 132 00 16.5000  8.00     132.00  132.00
#> 4   4    16 6125 2 00 33 23 33 23 16.6125  2.00      33.23   33.23
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74145763

复制
相关文章
Javascript闭包
越来越觉得国内没有教书育人的氛围,为了弄懂JS的闭包,我使出了我英语四级吃奶的劲去google上搜寻着有关闭包的解释,当我看到stackoverflow上这一篇解答,我脑中就出现了一句话:就是这货没跑了!
用户1065635
2019/03/21
7970
JavaScript闭包
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
奋飛
2019/08/15
7430
JavaScript闭包
在JavaScript中,闭包是指在一个函数内部创建另一个函数,并且这个内部函数可以访问其外部函数的变量、参数和内部函数自身的局部变量。简而言之,闭包是一个包含有自由变量的函数,这些变量被绑定在函数创建时所处的环境中。
堕落飞鸟
2023/05/17
8510
JavaScript 闭包
闭包: 闭包是由函数以及声明该函数的词法环境组合而成的。该环境包含了这个闭包创建时作用域内的任何局部变量。 也就是,两个嵌套关系的函数,内部函数可以访问外部函数定义的变量。 是通过作用域链,进行逐层查找并访问的 闭包的优点: 形成私有化空间,避免全局变量污染 持久化内存,保存数据 闭包的缺点: 由于持久化内存,导致内存泄漏 闭包主要用用场景: 实现分段计算 数据保护 缓存数据 闭包例子 function makeFunc() { const uname = 'Tricia' function di
且陶陶
2023/04/12
4540
javascript - 闭包
今天群里聊到JS的闭包,说是不理解。我看了下那个PDF的截图上的内容,。。。。我就看了一小会,反正也没看太看懂,写的太玄幻。。 我就觉得这个吧,看不懂闭包,其实也正常。因为看懂了反正一时你也用不上。。看不懂别着急,慢慢的就看懂了。 ============ 直白点讲,闭包就是函数套函数, function a(){ var aVal = '123'; function b(){ console.log( aVal ); } return b; } a()(); //123 这,就是一个最简单的闭包
web前端教室
2018/02/06
5990
JavaScript闭包
函数和对其词法环境lexical environment的引用捆绑在一起构成闭包,也就是说,闭包可以让你从内部函数访问外部函数作用域。在JavaScript,函数在每次创建时生成闭包。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。
WindRunnerMax
2020/10/20
1.1K0
JavaScript闭包
init() 创建了一个局部变量 name 和一个名为 displayName() 的函数。displayName() 是定义在 init() 里的内部函数,并且仅在 init() 函数体内可用。displayName() 没有自己的局部变量。然而,因为它可以访问到外部函数的变量,所以 displayName() 可以使用父函数 init() 中声明的变量 name 。
闲花手札
2021/11/15
6250
Javascript 闭包
1. 创建一个函数poll,它接受两个参数checkStatus[函数],callback[函数]。 2. poll会调用checkStatus,checkStatus返回true或者false。 3. 如果checkStatus返回true,调用callback并结束 4. 如果checkStatus返回false,1.5秒后继续调用checkStatus,如果还是返回false,1.5×2秒后继续调用checkStatus,还是false的话,1.5×3秒后继续调用,以此类推。 5. 不可以使用全局变量。
上山打老虎了
2022/06/14
3550
JavaScript闭包
其实关于闭包各个论坛社区里都有很多的文章来讲它,毕竟闭包是JavaScript中一个特色,也正因为这个雨中不同的特色也让闭包理解起来有一些吃力。笔者在这里不仅仅是想介绍闭包,也向列举一些笔者所见过的一些闭包,如果有读者还有一些比较经典的闭包例子,希望可以在评论区里留一下,谢谢。
IMWeb前端团队
2019/12/03
4720
javascript闭包
## 定义 **闭包:**有权访问另一个函数作用域中的变量的函数。 ## 解析 相信刚看到这个定义,很多人肯定很迷糊,现在给出示例。 ``` function func1(){ var a = 1; function func2(){ a++; console.log(a); }; return func2; } var res = func1();//等于func2 res();//等于func2(),输出2 ``` 首先定义了func1,
用户1624346
2018/04/10
7740
JavaScript 闭包
闭包(closure)是 Javascript 语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。
RiemannHypothesis
2022/10/28
3930
JavaScript闭包
IMWeb前端团队
2017/12/29
7470
JavaScript闭包
有权访问另一个函数作用域内变量的函数都是闭包。这里 couter 函数访问了构造函数 a 里面的变量 n,所以形成了一个闭包。 再来看一段代码:
grain先森
2019/05/05
7060
JavaScript闭包
JavaScript闭包
做前端的可太需要了解闭包了,几乎每个面试都会问到闭包,闭包的重要性不言而喻。什么是闭包:闭包一般是指那些引用了另一个函数作用域中变量的函数,通常是在嵌套函数中实现的。也就是说,闭包让你可以在一个内层函数中访问到其外层函数的作用域。
大熊G
2022/11/14
3680
JavaScript闭包
输入:f1 输出:function f1() //返回一个function对象的f1
HaC
2020/12/30
3370
JavaScript闭包
Javascript 闭包与变量
JavaScript中的作用域链的机制引出了一个副作用,即闭包只能取得包含函数中任何变量的最后一个值。闭包所保存的是整个变量对象,而不是某个特殊的值。
大道七哥
2019/09/10
4790
javascript 闭包
在A中返回B的引用 如果一个对象不再被引用,那么这个对象就会被GC回收,否则这个对象一直会保存在内存中。
达达前端
2019/07/15
4370
JavaScript 闭包
全局和局部变量即便名称相同,它们也是两个不同的变量。修改其中一个,不会影响另一个的值。
陈不成i
2021/07/19
3070
Javascript 闭包
一个函数和对其周围状态(lexical environment,词法环境)的引用捆绑在一起(或者说函数被引用包围),这样的组合就是闭包(closure)。也就是说,闭包让你可以在一个内层函数中访问到其外层函数的作用域。在 JavaScript 中,每当创建一个函数,闭包就会在函数创建的同时被创建出来。
超级大帅比
2021/09/05
4260
JavaScript闭包(Closure)
上面的代码中,函数 f2 就被包括在函数 f1 内部,这时 f1 内部的所有局部变量,对 f2 都是可见的。
Leophen
2019/08/23
5830

相似问题

向SAS热图中添加参考线

117

在柱状图中添加一条参考线,但表示已中断

10

换一条参考线吗?

14

在直方图中添加一条线

14

组合图中的目标参考线

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档