我喜欢用 setNames
即时重命名矢量(即时我的意思是一个返回对象的函数):
my_vector <- c(1,2,3)
setNames(my_vector, c("a","b","c"))
# a b c
# 1 2 3
这也适用于数据框列名
my_df <- data.frame(matrix(1:9, nrow=3))
setNames(my_df, c("a","b","c"))
a b c
1 1 4 7
2 2 5 8
3 3 6 9
有没有办法对行名做同样的事情?我认为这会起作用,但它不起作用:
t(setNames(t(my_df), c("a","b","c")))
最佳答案
我认为您所说的即时是您希望函数返回修改后的对象。自 rownames<-
不为你做,你必须定义你自己的函数:
setRowNames <- function(df, row.names) {
rownames(df) <- row.names
df
}
您可以将该函数定义放在脚本的顶部,或者甚至将其隐藏在您的
Rprofile
中。或 Rprofile.site
(如果您不熟悉,请参阅 ?Startup
)。然后在你的代码中,使用 setRowNames(my_df, c("a", "b", "c"))
.它简洁,灵活,读起来很好。t(setNames(t(my_df), c("a","b","c")))
不起作用,因为转置 data.frame 会为您提供一个没有名称但只有行名和列名的矩阵。
关于r - 如何动态重命名数据帧的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19543369/