如何将列表中的所有名称更改为 R 中的一个名称?

How can I change all the names in a list to one in R?

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

我也会对其他国家做同样的事情,比如德国、丹麦.. e.t.c。 还有,有没有办法在列表中按字母顺序对这些国家/地区进行排序?

提前致谢

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

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

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

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

And also, is there a way to order these countries alphabetically in a list?

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

  1. 不清楚您的意思 -- 您真的想要 list class 结果吗??。你想包含重复项吗?是否还有其他列需要留在相应的行中?
  2. 不清楚您是否尝试过任何方法。看看 ?sort?order 或者只是 [How to sort a data frame?] 的常见问题解答。
  3. 它与主要问题无关,将不相关的问题组合在一起是不好的做法。

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

test<-c("Finland:Aland Islands:Foglo","Germany","Finland:Aland Islands:Eckero")
test<-sort(gsub(":.*","",test))