Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.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列中也有单词的固定数字?_R_String_Vector_Transform - Fatal编程技术网

如何删除R列中也有单词的固定数字?

如何删除R列中也有单词的固定数字?,r,string,vector,transform,R,String,Vector,Transform,我有一个向量,它有一系列的数字和单词 df可能比@r2evans在评论中建议的解决方案更健壮/通用/安全 gsub( "(\\d{2,})\\d{2}$", "\\1", df) 它的作用是: 模式=“(^\\d{2,})\\d{2}$” ^匹配字符串的开头 \\d{2,}匹配至少两位数的任何子字符串(删除逗号,您只想匹配精确长度为4位数的字符串) (^\\d{2,})圆括号定义了从字符串开始的位置,以及作为一个组的最小两位数的以下重复 \\d{2}正好两位数字的重复 $匹配字符串的结尾

我有一个向量,它有一系列的数字和单词


df可能比@r2evans在评论中建议的解决方案更健壮/通用/安全

gsub( "(\\d{2,})\\d{2}$", "\\1", df)
它的作用是:

模式=
“(^\\d{2,})\\d{2}$”

  • ^
    匹配字符串的开头
  • \\d{2,}
    匹配至少两位数的任何子字符串(删除逗号,您只想匹配精确长度为4位数的字符串)
  • (^\\d{2,})
    圆括号定义了从字符串开始的位置,以及作为一个组的最小两位数的以下重复
  • \\d{2}
    正好两位数字的重复
  • $
    匹配字符串的结尾
简言之:它匹配任何仅存在一个数字的字符串,该字符串以至少两个数字开头,D以两个数字结尾(因此数字字符串的最小长度=4)

更换=
“\\1”

  • 用上述模式中的第一个定义组(
    (^\\d{2,})
    )替换整个匹配字符串
样本数据
df嗯,R中的向量不能包含数字和字符值的混合。它可能已经转换为所有字符。您上面提供的代码实际上不是有效的R代码(除非
其他
弃权
是其他地方定义的变量)。如果您提供了一个只为了让事情更清楚的示例,那就更好了。如果没有这个示例,您可能可以使用
gsub(“[0-9]{2}$”,“”,df)
。请注意,这将把
“56”
更改为
”@r2evans是正确的。那个代码运行得很好。谢谢
df <- c(123, "Other", 5678, "Abstain", "b12345", 123456, "123aa345")

gsub("(^\\d{2,})\\d{2}$", "\\1", df)
#[1] "123"      "Other"    "56"       "Abstain"  "b12345"   "1234"     "123aa345"