【问题标题】:How can I change all the names in a list to one in R?如何将列表中的所有名称更改为 R 中的一个?
【发布时间】:2021-01-05 19:44:55
【问题描述】:

如何将所有名称(例如:Finland:Aland Islands:Foglo)更改为仅:Finland?我尝试使用 lapply(gsub , pattern = "Finland*", replace = "Finland") 但是不行。

我也会对其他国家做同样的事情,比如德国、丹麦……等等。 另外,有没有办法在列表中按字母顺序排列这些国家?

提前谢谢你

1        Finland:Aland Islands:Foglo
2       Finland:Aland Islands:Eckero
3  Finland:Aland Islands:Fasta Aland
4                            Austria
5                            Belgium
6                           Bulgaria
7                        Switzerland
8             Cyprus:Northern Cyprus
9                             Cyprus
10                    Czech Republic
11                    Germany:Usedom
12                   Germany:Fehmarn
13                     Germany:Rugen
14                         Germany:4
15                           Germany
16                         Germany:6
17                   Denmark:Lolland
18                         Denmark:2
19                       Denmark:Mon
20                       Denmark:Als
21                 Denmark:Langeland
22                  Denmark:Bornholm
23                       Denmark:Fyn
24                         Denmark:8
25                     Denmark:Samso
26                 Denmark:Sjaelland
27                     Denmark:Laeso
28                           Denmark
29                  Spain:Formentera
30                       Spain:Ibiza
31                     Spain:Majorca
32                     Spain:Minorca
33                             Spain
34                  Estonia:Saaremaa
35                      Estonia:Muhu
36                   Estonia:Hiiumaa
37                           Estonia
38                         Finland:1
39                         Finland:2
40                         Finland:3
41                         Finland:4
42                         Finland:5
43                 Finland:Vallgrund
44                  Finland:Halluoto
45                           Finland
46                    France:Corsica
47               France:Ile d'Oleron
48                            France
49                  UK:Isle of Wight
50                 UK:Wales:Anglesey

【问题讨论】:

    标签: r lapply gsub


    【解决方案1】:

    gsub 是矢量化的,因此您不需要lapply(除非您想将该函数应用于多个列)。在正则表达式中,* 是一个量词,表示它之前的 0 个或多个事物,因此模式 "Finland*" 匹配 "Finlan" 后跟任意数量的 ds。

    相反,让我们用一个空字符串替换第一个 : 和它之后的任何东西 .*。 (正则表达式中的. 表示“任意字符”,因此.* 是“任意数量的任意字符”。)

    gsub(pattern = ":.*", replacement = "", x = your_data$your_column)
    

    还有,有没有办法在列表中按字母顺序排列这些国家?

    出于几个原因,我将主要忽略这个作为一个单独的问题

    1. 不清楚你的意思——你真的想要list 类结果吗??是否要包含重复项?是否还有其他列需要与相应的行保持一致?
    2. 不清楚您是否尝试过任何方法。看看?sort?order 或者只是关于[如何对数据框进行排序?] 的常见问题解答。
    3. 它与主要问题无关,将不相关的问题组合在一起是不好的做法。

    看看我提到的资源,试一试,如果您仍然遇到问题,请提出一个新问题。

    【讨论】:

      【解决方案2】:
      test<-c("Finland:Aland Islands:Foglo","Germany","Finland:Aland Islands:Eckero")
      test<-sort(gsub(":.*","",test))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-28
        • 2011-07-13
        • 2020-08-15
        • 2021-02-15
        • 2021-03-31
        • 2021-06-10
        • 2021-04-11
        相关资源
        最近更新 更多