繁体   English   中英

从向量中删除字符元素

[英]Removing character elements from a vector

我试图弄清楚如何从列表中删除多个字符(不是每个字符一个):

- 首先我在带有A2[]<-lapply(A,as.character)的字符列表A中转换了我的data.frame(单列A2[]<-lapply(A,as.character)

然后我将它转换为A3<-unlist(A2, recursive = TRUE, use.names = TRUE)生成一个包含A1中出现的所有原子成分的向量。

最后,我使用str_remove(A3, ".")删除,在这种情况下,点。 见下文:

     A1      A2      A3      A4      A5      A6      A7      A8      A9     A10 
    "*"     "*"     "*"     "*"     "*"     "*"     "*"     "*"     "*"     "*" 
    A11     A12     A13     A14     A15     A16     A17     A18     A19     A20 
    "*"   "=1-"   "*C:"     "I"     "."     "."     "."     "."     "."     "." 
    A21     A22     A23     A24     A25     A26     A27     A28     A29     A30 
    "."     "2"   "V7b"     "."     "."     "."     "."     "I"     "."     "." 

问题是将str_remove()其他元素应用为“*”会丢失。 这是正常的吗?

 [1] ""     ""     ""     ""     ""     ""     ""     ""     ""     ""    
 [11] ""     "1-"   "C:"   ""     ""     ""     ""     ""     ""     ""    
 [21] ""     ""     "7b"   ""     ""     ""     ""     ""     ""     ""  

有没有更好的方法呢? 它只是删除“。” 那列:

12     =1-
13     *C:
14      I
15      .
16      .
17      .
18      .
19      .
20      .
21      .
22      2
23    V7b
24      .
25      .
26      .
27      .
28      I
29      .
30      .
31      .

要得到:

=1-
*C:
I
2
V7b
I

这个时期是一个元字符(见这里 ),所以试着像这样逃避它 -

str_remove(A3, “\\.”)

编辑:

您可以使用str_remove_all从任意长度的向量中删除多个字符,这将从供应字符向量中删除每个匹配项。 您还可以提供str_remove_all 多个模式以便一次匹配,从而允许您只使用一行代码执行多个操作。

library(stringr)
a <- c("hello. this. is. text","this. is. also. text","here. is. even. more. text")
remove_these <- c("\\.","text")
str_remove_all(a, paste(remove_these, collapse = "|"))

返回:

"hello this is "     "this is also "      "here is even more "

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM