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

R 如何分割这些成分,然后在括号内使用不同数量的缩写

R 如何分割这些成分,然后在括号内使用不同数量的缩写,r,regex,string,strsplit,R,Regex,String,Strsplit,以下是我的数据的摘录: “草甘膦(HBC)、阿特拉津(HBC)、亚甲基钾(FUN、HBC、INS、NEM)、二氯丙烯(HBC、NEM)、异丙甲草胺(-s)(HBC)、百菌清(FUN)、氯化苦(NEM)、淀粉液化芽孢杆菌(FUN)、2,4-d(HBC、PGR)” 我希望此示例如下所示: 如果有帮助的话,我知道所有可能的缩写(HBC、FUN等) 这就是我迄今为止所尝试的 str = "glyphosate (HBC), atrazine (HBC), dichloropropene (HBC, N

以下是我的数据的摘录:

“草甘膦(HBC)、阿特拉津(HBC)、亚甲基钾(FUN、HBC、INS、NEM)、二氯丙烯(HBC、NEM)、异丙甲草胺(-s)(HBC)、百菌清(FUN)、氯化苦(NEM)、淀粉液化芽孢杆菌(FUN)、2,4-d(HBC、PGR)”

我希望此示例如下所示:

如果有帮助的话,我知道所有可能的缩写(HBC、FUN等)

这就是我迄今为止所尝试的

str = "glyphosate (HBC), atrazine (HBC), dichloropropene (HBC, NEM), metolachlor(-s) (HBC), chlorothalonil (FUN), chloropicrin (NEM), bacillus amyloliquifacien (FUN), 2,4-d (HBC, PGR), pendimethalin (HBC), metam (FUN, HBC, INS, NEM), acetochlor (HBC), metribuzin (HBC), dicamba (HBC), phorate (INS), chlorpyrifos (ACA, INS), flutolanil (FUN), paraquat (HBC), propazine (HBC), dimethenamid(-p) (HBC, FUN), bromoxynil (HBC)"

vec = unlist(unlist(strsplit(str, " ()")))
vec_clean = gsub('^\\(|\\),|\\,|)$', '', vec)

matrix(vec_clean,nrow = 24,ncol = 2, byrow = TRUE)
这给了我:

> matrix(vec_clean,nrow = 24,ncol = 2, byrow = TRUE)
      [,1]               [,2]             
 [1,] "glyphosate"       "HBC"            
 [2,] "atrazine"         "HBC"            
 [3,] "dichloropropene"  "HBC"            
 [4,] "NEM"              "metolachlor(-s" 
 [5,] "HBC"              "chlorothalonil" 
 [6,] "FUN"              "chloropicrin"   
 [7,] "NEM"              "bacillus"       
 [8,] "amyloliquifacien" "FUN"            
 [9,] "24-d"             "HBC"            
[10,] "PGR"              "pendimethalin"  
[11,] "HBC"              "metam"          
[12,] "FUN"              "HBC"            
[13,] "INS"              "NEM"            
[14,] "acetochlor"       "HBC"            
[15,] "metribuzin"       "HBC"            
[16,] "dicamba"          "HBC"            
[17,] "phorate"          "INS"            
[18,] "chlorpyrifos"     "ACA"            
[19,] "INS"              "flutolanil"     
[20,] "FUN"              "paraquat"       
[21,] "HBC"              "propazine"      
[22,] "HBC"              "dimethenamid(-p"
[23,] "HBC"              "FUN"            
[24,] "bromoxynil"       "HBC" 
我在str split“()”中使用的论点是由于反复试验,我不明白为什么在某种程度上会起作用。我尝试使用我在此修改的示例删除前导和尾随“(“and“,)”:


因此,这是一个开始,但当一个成分有更多的缩写,例如(乐趣,HBC等),它也分裂那里。它还删除了2,4-d中的“,”以及不应该删除的两个删节之间的“,”。它从dimethenamid(-p)中删除了尾随的“)”,它也不应该这样做

使用
stringr::str\u match\u all

stringr::str_match_all(str, ",?\\s?(.*?)\\s\\((.*?)\\),")[[1]][, -1]

#       [,1]                        [,2]                
# [1,] "glyphosate"                "HBC"               
# [2,] "atrazine"                  "HBC"               
# [3,] "dichloropropene"           "HBC, NEM"          
# [4,] "metolachlor(-s)"           "HBC"               
# [5,] "chlorothalonil"            "FUN"               
# [6,] "chloropicrin"              "NEM"               
# [7,] "bacillus amyloliquifacien" "FUN"               
# [8,] "2,4-d"                     "HBC, PGR"          
# [9,] "pendimethalin"             "HBC"               
#[10,] "metam"                     "FUN, HBC, INS, NEM"
#[11,] "acetochlor"                "HBC"               
#[12,] "metribuzin"                "HBC"               
#[13,] "dicamba"                   "HBC"               
#[14,] "phorate"                   "INS"               
#[15,] "chlorpyrifos"              "ACA, INS"          
#[16,] "flutolanil"                "FUN"               
#[17,] "paraquat"                  "HBC"               
#[18,] "propazine"                 "HBC"               
#[19,] "dimethenamid(-p)"          "HBC, FUN"   

我们从每个值中提取两部分。第一部分以一个可选的逗号和空格开始(第二个值之后),直到遇到一个开始圆括号(
),第二部分是开始圆括号和结束圆括号内的所有内容。

使用
stringr::str_match_all

stringr::str_match_all(str, ",?\\s?(.*?)\\s\\((.*?)\\),")[[1]][, -1]

#       [,1]                        [,2]                
# [1,] "glyphosate"                "HBC"               
# [2,] "atrazine"                  "HBC"               
# [3,] "dichloropropene"           "HBC, NEM"          
# [4,] "metolachlor(-s)"           "HBC"               
# [5,] "chlorothalonil"            "FUN"               
# [6,] "chloropicrin"              "NEM"               
# [7,] "bacillus amyloliquifacien" "FUN"               
# [8,] "2,4-d"                     "HBC, PGR"          
# [9,] "pendimethalin"             "HBC"               
#[10,] "metam"                     "FUN, HBC, INS, NEM"
#[11,] "acetochlor"                "HBC"               
#[12,] "metribuzin"                "HBC"               
#[13,] "dicamba"                   "HBC"               
#[14,] "phorate"                   "INS"               
#[15,] "chlorpyrifos"              "ACA, INS"          
#[16,] "flutolanil"                "FUN"               
#[17,] "paraquat"                  "HBC"               
#[18,] "propazine"                 "HBC"               
#[19,] "dimethenamid(-p)"          "HBC, FUN"   

我们从每个值中提取两部分。第一部分以可选的逗号和空格开始(对于第二个值,从第二个值开始),直到遇到开始圆括号(
),第二部分是开始圆括号和结束圆括号内的所有内容。

下面是一个基本的R解决方案:

str=“草甘膦(HBC)、阿特拉津(HBC)、二氯丙烯(HBC、NEM)、异丙甲草胺(HBC)、百菌清(FUN)、氯化苦(NEM)、淀粉液化芽孢杆菌(FUN)、2,4-d(HBC、PGR)、二甲戊灵(HBC)、异丙草胺(FUN、HBC、INS、NEM)、乙草胺(HBC)、甲溴嗪(HBC)、二甲草胺(HBC)、甲拌磷(INS)、毒死蜱(ACA、INS)、氟虫腈(FUN)百草枯(HBC)、丙嗪(HBC)、二甲胺(-p)(HBC,FUN)、溴苯腈(HBC)”
out[1,]草甘膦“HBC”
#>[2,]阿特拉津“HBC”
#>[3,]二氯丙烯“HBC,NEM”
#>[4,]“异丙甲草胺(-s)”“HBC”
#>[5,]百菌清“乐趣”
#>[6,]氯化苦“NEM”
#>[7,]淀粉液化芽孢杆菌“乐趣”
#>[8,]2,4-d“HBC,PGR”
#>[9,]二甲戊灵“HBC”
#>[10,]“metam”“乐趣、HBC、INS、NEM”
#>[11,]乙草胺“HBC”
#>[12,]metribuzin“HBC”
#>[13,]麦草畏“HBC”
#>[14,]“磷酸”INS
#>[15,]毒死蜱“ACA,INS”
#>[16,]“氟妥拉尼”“乐趣”
#>[17,]百草枯“HBC”
#>[18,]丙嗪“HBC”
#>[19,]“二甲胺(-p)”“HBC,乐趣”
#>[20,]溴苯腈“HBC”

由(v0.3.0)于2020年4月5日创建。

以下是基本R解决方案:

str=“草甘膦(HBC)、阿特拉津(HBC)、二氯丙烯(HBC、NEM)、异丙甲草胺(HBC)、百菌清(FUN)、氯化苦(NEM)、淀粉液化芽孢杆菌(FUN)、2,4-d(HBC、PGR)、二甲戊灵(HBC)、异丙草胺(FUN、HBC、INS、NEM)、乙草胺(HBC)、甲溴嗪(HBC)、二甲草胺(HBC)、甲拌磷(INS)、毒死蜱(ACA、INS)、氟虫腈(FUN)百草枯(HBC)、丙嗪(HBC)、二甲胺(-p)(HBC,FUN)、溴苯腈(HBC)”
out[1,]草甘膦“HBC”
#>[2,]阿特拉津“HBC”
#>[3,]二氯丙烯“HBC,NEM”
#>[4,]“异丙甲草胺(-s)”“HBC”
#>[5,]百菌清“乐趣”
#>[6,]氯化苦“NEM”
#>[7,]淀粉液化芽孢杆菌“乐趣”
#>[8,]2,4-d“HBC,PGR”
#>[9,]二甲戊灵“HBC”
#>[10,]“metam”“乐趣、HBC、INS、NEM”
#>[11,]乙草胺“HBC”
#>[12,]metribuzin“HBC”
#>[13,]麦草畏“HBC”
#>[14,]“磷酸”INS
#>[15,]毒死蜱“ACA,INS”
#>[16,]“氟妥拉尼”“乐趣”
#>[17,]百草枯“HBC”
#>[18,]丙嗪“HBC”
#>[19,]“二甲胺(-p)”“HBC,乐趣”
#>[20,]溴苯腈“HBC”
由(v0.3.0)于2020-04-05创建的“二氯丙烯(HBC,NEM)”从所需表格的图像中丢失。“二氯丙烯(HBC,NEM)”从所需表格的图像中丢失。