我有以下矢量:拆分或替代字符串与通配符中的R
a <- c("abc_lvl1", "def_lvl2")
我基本上要分成两个载体: ("abc", "def")
和("lvl1", "lvl2)
。我知道如何用子替换:
sub(".*_", "", a)
[1] "lvl1" "lvl2"
我认为这可以翻译为“搜索任何数量的任何字符之前”_“并且不进行任何替换。因此 - 我想 - 这应该给我的其他所需的载体:
sub("_*.", "", a)
,但它只是删除了主角:
[1] "bc_lvl1" "ef_lvl2"
在哪里搞错了吗? 这实质上是excel中“text-to-columns”函数的等价物。
只需使用'strsplit'? – A5C1D2H2I1M1N2O1R2T1
似乎是合法的,但它创建了一个向量列表,我需要再次分割:strsplit(a,“_”) [[1]] [1]“abc”“lvl1” [[2 ]] [1]“def”“lvl2” – nouse
'*'表示前面的字符出现零次或多次出现,'.'表示任何字符,所以'_ *。'删除零后面跟一个字符。你想要'_。*'这将删除下划线,然后是任何字符的所有进一步出现。 –