在 R 中,使用 rle(运行 长度编码)的结果,包括命名行和列 headers
In R, using results of rle (Run Length Encoding) including named row and column headers
我有一个大型矩阵,其中包含行名公司、列名月份和每个元素的数据。测试数据如下:
testmatrix<-matrix(c(1,0,0,0,10,5,5,5,5,5,2,2,0,0,0,0,0,1,1,1),nrow=4,ncol=5,byrow=TRUE)
colnames(testmatrix)<-c("Jan","Feb","Mar","Apr","May")
rownames(testmatrix)<-c("Company1","Company2","Company3","Company4")
progression<-apply(testmatrix,1,rle)
progression
级数 object 是应用于矩阵每一行的 rle 函数的输出。结果是一个包含 2 个元素的列表,它们都是 class 'rle'。我愿意:
- 了解如何输出(在 R 中)Company1 的 4x3(逐列)矩阵,如下所示:
因此我很难理解如何处理 progression
提供的输出
- 将
progression
导出到excel以供进一步分析(最好采用上面(1)中的格式(包括列和行headers(在列表输出中它们被引用如:attr(*,"names")).
非常感谢您的帮助!
这不是特别优雅,但可以完成工作:
format_rle <- function(rle, rn){
l <- list(rle$lengths,
names(rle$lengths),
rle$values,
names(rle$values))
m <- as.matrix(do.call(rbind, l))
colnames(m) <- NULL
rownames(m) <- rep(rn, nrow(m))
m
}
尝试 format_rle(progression[[1]], "foo")
了解思路:
[,1] [,2] [,3]
foo "1" "3" "1"
foo "Feb" "May" ""
foo "1" "0" "10"
foo "Jan" "Apr" "May"
然后我们将此函数应用于所有进行中的元素,并将结果保存到根据进行中的名称命名的单个 csv 文件中。你的工作目录中应该有 a bunch of .csv
个文件(getwd()
来打印它)。
for (i in seq_along(progression))
write.csv(format_rle(progression[[i]], names(progression)[i]),
file=paste0(names(progression[i]), ".csv"))
这是你想要的吗?
我有一个大型矩阵,其中包含行名公司、列名月份和每个元素的数据。测试数据如下:
testmatrix<-matrix(c(1,0,0,0,10,5,5,5,5,5,2,2,0,0,0,0,0,1,1,1),nrow=4,ncol=5,byrow=TRUE)
colnames(testmatrix)<-c("Jan","Feb","Mar","Apr","May")
rownames(testmatrix)<-c("Company1","Company2","Company3","Company4")
progression<-apply(testmatrix,1,rle)
progression
级数 object 是应用于矩阵每一行的 rle 函数的输出。结果是一个包含 2 个元素的列表,它们都是 class 'rle'。我愿意:
- 了解如何输出(在 R 中)Company1 的 4x3(逐列)矩阵,如下所示:
因此我很难理解如何处理 progression
- 将
progression
导出到excel以供进一步分析(最好采用上面(1)中的格式(包括列和行headers(在列表输出中它们被引用如:attr(*,"names")).
非常感谢您的帮助!
这不是特别优雅,但可以完成工作:
format_rle <- function(rle, rn){
l <- list(rle$lengths,
names(rle$lengths),
rle$values,
names(rle$values))
m <- as.matrix(do.call(rbind, l))
colnames(m) <- NULL
rownames(m) <- rep(rn, nrow(m))
m
}
尝试 format_rle(progression[[1]], "foo")
了解思路:
[,1] [,2] [,3]
foo "1" "3" "1"
foo "Feb" "May" ""
foo "1" "0" "10"
foo "Jan" "Apr" "May"
然后我们将此函数应用于所有进行中的元素,并将结果保存到根据进行中的名称命名的单个 csv 文件中。你的工作目录中应该有 a bunch of .csv
个文件(getwd()
来打印它)。
for (i in seq_along(progression))
write.csv(format_rle(progression[[i]], names(progression)[i]),
file=paste0(names(progression[i]), ".csv"))
这是你想要的吗?