变量的重命名 常用的修改变量名的方法,分别是利用交互式编辑器,rename(),names(),colnames(), rownames().
1)交互式编辑器修改变量名
若用交互式编辑器来修改数据集中的变量名,可通过fix()函数实现。若数据集为矩阵或数据框,可直接单击弹出的编辑器对话框对变量名进行手动修改;若数据集为列表形式,则可将交互式编辑器转换为记事本,就可对“.names”之后对应的变量名进行修改。具体如下。
> score <- (student=c("A","B","c","D"),
+ gender=c("E","E","E","E"),
+ math=c(90,79,89,86),
+ Eng=c(80,99,69,76),
+ pl=c(66,59,NA,88))
> fix(score) # editor page
> = (score) #Convert to list format
> fix() # Notepad file
2) reshape 逻辑包的Rename()可用于修改数据框和列表的变量名,但不能用于修改矩阵的变量名。
> library(reshape)
Error in library(reshape) : 不存在叫‘reshape’这个名字的程辑包
> ("reshape")
> library(reshape)
> rename(score,c(pl="chinese"))
student gender math Eng chinese
1 A E 90 80 66
2 B E 79 99 59
3 c E 89 69 NA
4 D E 86 76 88
> rename(, c(pl="chinese"))
$student
[1] A B c D
Levels: A B c D
$gender
[1] E E E E
Levels: E
$math
[1] 90 79 89 86
$Eng
[1] 80 99 69 76
$chinese
[1] 66 59 NA 88
3)names()函数和rename()函数的作用相同,但不同之处在于,names()函数会在原数据集中修改变量名,但renames()函数并不会直接改变原数据集中的变量名
> names(score) [5]="chinese"
> score
student gender math Eng chinese
1 A E 90 80 66
2 B E 79 99 59
3 c E 89 69 NA
4 D E 86 76 88
4) colnames() and rownames()函数可以修改矩阵或数据框的行名和列名,但不可修改矩阵的变量名。
> colnames(score)[5]="Chinese"
> rownames(score) =letters[1:4]
> score
student gender math Eng Chinese
a A E 90 80 66
b B E 79 99 59
c c E 89 69 NA
d D E 86 76 88