假设我创建了以下矩阵:
> x <- matrix(1:20000,nrow=100)
> x[1:10,1:10]
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 1 101 201 301 401 501 601 701 801 901
[2,] 2 102 202 302 402 502 602 702 802 902
[3,] 3 103 203 303 403 503 603 703 803 903
[4,] 4 104 204 304 404 504 604 704 804 904
[5,] 5 105 205 305 405 505 605 705 805 905
[6,] 6 106 206 306 406 506 606 706 806 906
[7,] 7 107 207 307 407 507 607 707 807 907
[8,] 8 108 208 308 408 508 608 708 808 908
[9,] 9 109 209 309 409 509 609 709 809 909
[10,] 10 110 210 310 410 510 610 710 810 910
R中有哪些方法可以更改行名和列名?例如,我喜欢行名称为SS1, SS2, ..., SS100
,列名称为M1, M2, ..., M200
。我通常使用1000行和列的数据,我需要一个很好的方法来做到这一点。有些人使用类似attributes(x)$dimnames <- list(...)
的内容,有些则使用rownames <- paste(...)
。什么是可能的方法?
我的第二个问题是,在将矩阵转换为数据帧后,我可以使用相同的方法吗?
答案 0 :(得分:11)
从评论到回答:
row.names(x) <- paste("SS", 1:nrow(x), sep="")
colnames(x) <- paste("M" , 1:ncol(x), sep="")
正如@doug所写,它适用于矩阵和数据帧。
答案 1 :(得分:6)
是的,相同的方法(矩阵/ data.frame) - 见下文:
A = matrix(1:12, nrow=4)
colnames(A) = c("col1", "col2", "col3")
row.names(A) = c("row1", "row2", "row3", "row4")
dfA = as.data.frame(A)
row.names(dfA) = c("r1", "r2", "r3", "r4")
colnames(A) = c("C1", "C2", "C3")
为了节省时间,你可以这样做:
x = rep("col", dim(M)[2])
y = 1:dim(M)[2]
colnames(M) = paste(x, y, sep="")
答案 2 :(得分:0)
如果在列表中,您可以这样做。
dimnames(x)[[1]]<-paste("SS", 1:nrow(x), sep="")
dimnames(x)[[2]]<-paste("M" , 1:ncol(x), sep="")