Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.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
如何表示str_remove的多个条件?_R_Stringr - Fatal编程技术网

如何表示str_remove的多个条件?

如何表示str_remove的多个条件?,r,stringr,R,Stringr,我有一个凌乱的数据集,它由多种注释组成,如A1-2,C12.3。更糟糕的是,它们并不一致 正在尝试通过添加[[:punct]]通过stringr::str_remove删除它们,但似乎在所有条件下都不起作用。似乎不可能在一条线上解决所有问题,但必须逐一处理 我想征求意见 DT <- c("A1", "A1","A3-12", "A200.4", "AX3-15", "B18", "F16", "Z32-1", "E300--2", "C61","TXDS") str_remove(DT,

我有一个凌乱的数据集,它由多种注释组成,如
A1-2
C12.3
。更糟糕的是,它们并不一致

正在尝试通过添加
[[:punct]]
通过stringr::str_remove删除它们,但似乎在所有条件下都不起作用。似乎不可能在一条线上解决所有问题,但必须逐一处理

我想征求意见

DT <- c("A1", "A1","A3-12", "A200.4", "AX3-15", "B18", "F16", "Z32-1", "E300--2", "C61","TXDS")

str_remove(DT, pattern="[-][0-9][0-9]")
str_remove(DT, pattern="[[:punct:]][0-9][0-9]")
Target <- c("A1", "A1.1","A3", "A200", "AX3", "B18", "F16", "Z32", "E300", "C61","TXDS")
# hoping the result of identical(Target, DT) is TRUE 

DT也许一个简单的
sub
调用就可以了。这将删除
-
之后的所有内容

sub("-.*|\\..*", "", DT)
#[1] "A1"   "A1"   "A3"   "A200" "AX3"  "B18"  "F16"  "Z32"  "E300" "C61"  "TXDS"

我们可以将
-
放在方括号中,使它们与成功的其他字符(
*
)匹配,在替换中,指定空白(


@Ronaksha对不起,我的错。应该是
A1
。我想您更改了输入(
DT
)而不是输出(
Target
)。谢谢,我会立即尝试。
sub("[-.].*", "", DT)
#[1] "A1"   "A1"   "A3"   "A200" "AX3"  "B18"  "F16"  "Z32"  "E300" "C61"  "TXDS"