2016-09-24 70 views
1

正如本文的标题所示,我试图重命名我的数据框中的某些列,但代码似乎不适用于我。没有错误消息。所以,我想知道我是做错了什么或错过了什么。这是MWE。在dplyr中的重命名功能不起作用

install.packages("rsdmx") 
install.packages("dplyr") 
library(rsdmx) 
library(dplyr) 
#Download data 
Assets.PIT <- readSDMX("http://widukind-api.cepremap.org/api/v1/sdmx/IMF/data/IFS/..Q.BFPA-BP6-USD") 
Assets.PIT <- as.data.frame(Assets.PIT) 

names(Assets.PIT)[10]<-"A.PI.T" 

# Keep the required columns 
A.port.inv.total<-Assets.PIT[c("WIDUKIND_NAME","REF-AREA","TIME_PERIOD","A.PI.T")] 

所以在上面的代码中,我要重命名的一些列的A.port.inv.total,所以,我使用:

# Rename columns 
rename(A.port.inv.total, Country=WIDUKIND_NAME, year=TIME_PERIOD) 

但产生的输出又是:

names(A.port.inv.total) 
[1] "WIDUKIND_NAME" "REF-AREA"  "TIME_PERIOD" "A.PI.T" 

更新说明 我想重命名列向量WIDUKIND_NAMETIME_PERIODCountryyear

回答

1

你的代码工作正常给我,但我认为你必须指定rename函数的结果:

rename(A.port.inv.total, Country=WIDUKIND_NAME, year=TIME_PERIOD) 
> names(A.port.inv.total) 
[1] "WIDUKIND_NAME" "REF-AREA"  "TIME_PERIOD" "A.PI.T" 

A.port.inv.total <- rename(A.port.inv.total, Country=WIDUKIND_NAME, year=TIME_PERIOD) 
> names(A.port.inv.total) 
[1] "Country" "REF-AREA" "year"  "A.PI.T" 
+0

这是真的,它现在的作品对我来说,太。但是,它应该没有任务,没有?我认为这是一个严重的缺陷。 – msh855

+0

是的,我不知道它为什么不这样工作。我也对其他软件包的其他'rename'功能感到困惑。 –

+1

这不仅仅是重命名。 R中的所有对象都是不可变的(至少是你会遇到的基本对象)。您只能通过更改副本并将副本重新分配到相同的名称来更改它们。 – drhagen