【发布时间】:2020-03-07 08:16:09
【问题描述】:
我有一个向量
myVec <- c('1.2','asd','gkd','232','4343','1.3zyz','fva','3213','1232','dasd')
在这个向量中,我想做两件事:
- 从同时包含数字和字母的元素中删除所有数字,然后
- 如果一组字母后面跟着另一组字母,请将它们合并为一个。
所以上面的向量会是这样的:
'1.2','asdgkd','232','4343','zyzfva','3213','1232','dasd'
我想我会先找到字母数字元素,然后使用 gsub 从它们中删除数字。 我试过这个
gsub('[0-9]+', '', myVec[grepl("[A-Za-z]+$", myVec, perl = T)])
"asd" "gkd" ".zyz" "fva" "dasd"
即它保留了我不想要的.。
【问题讨论】:
-
不确定你的意思是行不通的。对于每个包含数字的字符串,即索引 1、4、5、6、8 和 9,我都得到了错误。这不是您对第一步的期望吗?
-
我假设您的问题是
1.3zyz未被识别,因此排除在号码删除之外?您断言 start 字母以字符串开头,因此只需从您的通话中删除^:grepl("[A-Za-z]+$", myVec, perl = T) -
@camille 我希望代码只为字母数字返回 true,而不是数字或字母
-
我已经编辑了我的问题以获得清晰的解释
-
使用
gsub('[0-9\\.]+', ' ', myVec[grepl("[A-Za-z]+$", myVec, perl = T)])