如何将列表中的所有名称更改为 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?
由于一些原因,我将主要忽略这个作为一个单独的问题
- 不清楚您的意思 -- 您真的想要
list
class 结果吗??。你想包含重复项吗?是否还有其他列需要留在相应的行中?
- 不清楚您是否尝试过任何方法。看看
?sort
和 ?order
或者只是 [How to sort a data frame?] 的常见问题解答。
- 它与主要问题无关,将不相关的问题组合在一起是不好的做法。
看看我提到的资源,试一试,如果您仍然遇到问题,请提出新问题。
test<-c("Finland:Aland Islands:Foglo","Germany","Finland:Aland Islands:Eckero")
test<-sort(gsub(":.*","",test))
如何将所有名称更改为: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?
由于一些原因,我将主要忽略这个作为一个单独的问题
- 不清楚您的意思 -- 您真的想要
list
class 结果吗??。你想包含重复项吗?是否还有其他列需要留在相应的行中? - 不清楚您是否尝试过任何方法。看看
?sort
和?order
或者只是 [How to sort a data frame?] 的常见问题解答。 - 它与主要问题无关,将不相关的问题组合在一起是不好的做法。
看看我提到的资源,试一试,如果您仍然遇到问题,请提出新问题。
test<-c("Finland:Aland Islands:Foglo","Germany","Finland:Aland Islands:Eckero")
test<-sort(gsub(":.*","",test))