R数组置换命名列和行

时间:2014-03-10 11:23:17

标签: arrays r matrix

这是 convert 4-dimensional array to 2-dimensional data set in R 的后续问题,@ Ben-Bolker是answered

我有一个名为'y'的3D数组,其维度为[37,29,2635](即公司,年份,班级)。使用Ben的公式:

avm11<-matrix(aperm(y,c(1,3,2)),prod(dim(y)[c(1,3)]))

我设法将其转换为尺寸为[37 * 2635,29]的2D数组。但是,行名称已成为无意义的数字,我需要在排列期间生成行名称,以便获得类型为firm_class的97495个唯一行名称。

我一直试图通过paste0()这样做,但我做错了。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您可以使用seq_len()。 E.g。

rownames(avm11)<-paste(seq_len(length(avm11[,1])),"observation",sep=" ")

使rownames可以依赖变量firm_class:

#Create data frame:
df<-data.frame(X=c(0,1,2,3,4,5),Y=c("a","b","c","d","e","f"))
n<-length(df[,1])

#Generate names containing class name and unique number:
namevector<-sapply(seq_len(n),function(i) names_vector[i]<-paste("Class", df[i,1], i,sep="."))

#Equate rownames to generated names:
rownames(df)<-namevector