这是 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()
这样做,但我做错了。有什么建议吗?
答案 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