如何在创建对象时设置行名?

时间:2018-02-23 22:17:04

标签: r

基础R中是否有任何选项,如何设置行名和列名,i。即在基础R中创建对象时维度名称​​?

示例:

假设我们有一个数据框' dfe'。

set.seed(8803)
dfe <- data.frame(V1=sample(1:10, 3),
                  V2=sample(1:10, 3),
                  V3=sample(1:10, 3), 
                  V4=sample(1:10, 3))
dfe
#   V1 V2 V3 V4
# 1  3  7  1  6
# 2  9  4  6  5
# 3  5  2  8  9

我们可以使用names(dfe) <- month.abb[1:4]或(对于数据框)colnames(dfe) <- month.abb[1:4]设置列名。因此对于行名rownames(dfe) <- LETTERS[1:3]

我们也可以在dimnames()的一个过程中同时执行这两项操作。与创建数据框架一起,有两个步骤。

dfe <- data.frame(.)
dimnames(dfe) <- list(LETTERS[1:3], month.abb[1:4])
dfe
#   Jan Feb Mar Apr
# A   3   3   2   1
# B   9   4   6   9
# C  10   1   5   5

使用setNames(),我们可以在创建数据框时提供列名。

dfe <- setNames(data.frame(V1=sample(1:10, 3),
                  V2=sample(1:10, 3),
                  V3=sample(1:10, 3), 
                  V4=sample(1:10, 3)), month.abb[1:4])
names(dfe)
# [1] "Jan" "Feb" "Mar" "Apr"

我是否遗漏了行名称的内容,甚至更好的基本R中的维度名称在创建对象时设置了这些名称?我找不到像setRowNames()setDimNames()这样的内容。你是怎么做到的?

注意:解决方案应该是对象的通用解决方案,而不仅仅是适合创建数据框架或矩阵。

1 个答案:

答案 0 :(得分:2)

这适用于数据帧和矩阵。此处BOD是R附带的数据框,但如果我们将BOD替换为as.matrix(BOD)

,此代码也可以使用
"rownames<-"(BOD, letters[1:6])