Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.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 - Fatal编程技术网

从R中的向量中删除字符串

从R中的向量中删除字符串,r,string,R,String,我有一个向量,看起来像 > inecodes [1] "01001" "01002" "01049" "01003" "01006" "01037" "01008" "01004" "01009" "01010" "01011" [12] "01013" "01014" "01016" "01017" "01021" "01022" "01023" "01046" "01056" "01901" "01027" [23] "01019" "01020" "01028" "01

我有一个向量,看起来像

> inecodes
   [1] "01001" "01002" "01049" "01003" "01006" "01037" "01008" "01004" "01009" "01010" "01011"
  [12] "01013" "01014" "01016" "01017" "01021" "01022" "01023" "01046" "01056" "01901" "01027"
  [23] "01019" "01020" "01028" "01030" "01031" "01032" "01902" "01033" "01036" "01058" "01034"
  [34] "01039" "01041" "01042" "01043" "01044" "01047" "01051" "01052" "01053" "01054" "01055"
我想从这个向量中去掉这些数字:

>pob
 [1] "01001-Alegría-Dulantzi"           "01002-Amurrio"                   
 [3] "01049-Añana"                      "01003-Aramaio"                   
 [5] "01006-Armiñón"                    "01037-Arraia-Maeztu"             
 [7] "01008-Arratzua-Ubarrundia"        "01004-Artziniega"                
 [9] "01009-Asparrena"                  "01010-Ayala/Aiara"               
[11] "01011-Baños de Ebro/Mañueta"      "01013-Barrundia"                 
[13] "01014-Berantevilla"               "01016-Bernedo"                   
[15] "01017-Campezo/Kanpezu"            "01021-Elburgo/Burgelu"           
[17] "01022-Elciego"                    "01023-Elvillar/Bilar"            
[19] "01046-Erriberagoitia/Ribera Alta"
它们比这些样品长,而且它们的长度不同。答案必须如下所示:

>pob
     [1] "Alegría-Dulantzi"           "Amurrio"                   
     [3] "Añana"                      "Aramaio"                   
     [5] "Armiñón"                    "Arraia-Maeztu"             
     [7] "Arratzua-Ubarrundia"        "Artziniega"                
     [9] "Asparrena"                  "Ayala/Aiara"               
    [11] "Baños de Ebro/Mañueta"      "Barrundia"                 
    [13] "Berantevilla"               "Bernedo"                   
    [15] "Campezo/Kanpezu"            "Elburgo/Burgelu"           
    [17] "Elciego"                    "Elvillar/Bilar"            
    [19] "Erriberagoitia/Ribera Alta"
不确定为什么需要inecodes,因为您可以使用sub删除所有数字:

sub('^\\d+-', '', pob)
结果:

您可能需要inecodes的一个原因是pob中有inecodes中不存在的代码,但这里的情况似乎不是这样。如果您坚持使用inecodes从pob中删除数字,您可以使用stringr中的str_replace_all:

这将为您提供完全相同的结果:

 [1] "Alegría-Dulantzi"           "Amurrio"                    "Añana"                     
 [4] "Aramaio"                    "Armiñón"                    "Arraia-Maeztu"             
 [7] "Arratzua-Ubarrundia"        "Artziniega"                 "Asparrena"                 
[10] "Ayala/Aiara"                "Baños de Ebro/Mañueta"      "Barrundia"                 
[13] "Berantevilla"               "Bernedo"                    "Campezo/Kanpezu"           
[16] "Elburgo/Burgelu"            "Elciego"                    "Elvillar/Bilar"            
[19] "Erriberagoitia/Ribera Alta"
数据:

不确定为什么需要inecodes,因为您可以使用sub删除所有数字:

sub('^\\d+-', '', pob)
结果:

您可能需要inecodes的一个原因是pob中有inecodes中不存在的代码,但这里的情况似乎不是这样。如果您坚持使用inecodes从pob中删除数字,您可以使用stringr中的str_replace_all:

这将为您提供完全相同的结果:

 [1] "Alegría-Dulantzi"           "Amurrio"                    "Añana"                     
 [4] "Aramaio"                    "Armiñón"                    "Arraia-Maeztu"             
 [7] "Arratzua-Ubarrundia"        "Artziniega"                 "Asparrena"                 
[10] "Ayala/Aiara"                "Baños de Ebro/Mañueta"      "Barrundia"                 
[13] "Berantevilla"               "Bernedo"                    "Campezo/Kanpezu"           
[16] "Elburgo/Burgelu"            "Elciego"                    "Elvillar/Bilar"            
[19] "Erriberagoitia/Ribera Alta"
数据:


试试这个。比赛应该快得多

pos<-which(!is.na(pob[match(sub('^([0-9]+)-.*$','\\1',pob),inecodes)]))
pob[pos]<-sub('^[0-9]+-(.*)$','\\1',pob[pos])

如果你能做到这一点,请张贴时间安排。Match通常可以解决大型数据集查找的许多计算问题。想看看是否有相反的情况。

试试这个。比赛应该快得多

pos<-which(!is.na(pob[match(sub('^([0-9]+)-.*$','\\1',pob),inecodes)]))
pob[pos]<-sub('^[0-9]+-(.*)$','\\1',pob[pos])

如果你能做到这一点,请张贴时间安排。Match通常可以解决大型数据集查找的许多计算问题。想看看是否有相反的情况。

这段代码有很多计算代码,对不起,你需要一个更优化的解决方案吗?这段代码有很多计算代码,对不起,你需要一个更优化的解决方案吗?是的,但是如果你不理解这个问题,你不能给它打否定的分数,因此,请过问下一个问题,不要只回答简单的问题。仅供参考,可能有人对您的问题投了否决票,因为您提供的向量不容易复制,请尝试复制并粘贴您在控制台中发布的内容并运行,它不会给您提供所需的向量。相反,发布你用来创建这些向量的代码。问题很清楚,但是高级用户永远不会理解,因为你只想问一个简单的问题。我的答案解决了你的问题吗?是的,但是如果你不理解这个问题,你不能给它打否定的分数,因此,请过问下一个问题,不要只回答简单的问题。仅供参考,可能有人对您的问题投了否决票,因为您提供的向量不容易复制,请尝试复制并粘贴您在控制台中发布的内容并运行,它不会给您提供所需的向量。相反,发布你用来创建这些向量的代码。问题很清楚,但高级用户永远不会理解,因为你只想问一个简单的问题。我的答案解决了你的问题吗?有人否决了这个答案。。。请留下评论,以便我能改进我的答案。有人否决了这个答案。。。请留下评论,以便我能改进我的答案。
pos<-which(!is.na(pob[match(sub('^([0-9]+)-.*$','\\1',pob),inecodes)]))
pob[pos]<-sub('^[0-9]+-(.*)$','\\1',pob[pos])