使用 dplyr 更改包含冒号(“:”)的字符名称

Change char name containing colon (":") with dplyr

我有一个包含这样写的国家名称的数据集:

 - en:france
 - en:united-kingdom
 - en:spain

我想将名称更改为:

 - France
 - United_Kingdom
 - Spain

但是如果我将 select 函数与 dplyr 一起使用,我会收到此错误:

"Error in eval(expr, envir, enclos) : object 'en' not found".

这是我到目前为止编写的代码(使用来自 Kaggle called foodfacts 的数据框):

countries <- foodfacts %>%
         tbl_df() %>%
         group_by(countries_tags) %>%
         summarise(count = n()) %>%
         filter(!grepl(",", countries_tags)) %>%
         select(France = en:france) %>%
         arrange(desc(count))

谁能告诉我如何更改包含冒号的对象的名称?

select 只有 selects 列。如果列名有冒号,您可能必须使用 select_ 并引用列名:select_("en:france")

如果你需要个案,你必须使用 filter - 但请注意,比较需要 ==,而不是单一 =(如你的 select-在上面调用):filter(France == "en:france")

如果需要重命名 ,请使用 colnames(dat)[which(colnames(dat) == "en:france")] <- "France"

如果需要重命名,也可以使用dat$x[which(dat$x == "en:france")] <- "France".