从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])