我的数据类似于:
listdata <- list(matrix(c(1,1,1,1,3,3,3,3),nrow=2,ncol=4),matrix(c(1,1,1,1,2,2,2,2),nrow=2))
names(listdata) <- c("5555","5566")
RowData <- lapply(listdata, "rownames<-", c("from","to"))
FrameData <- lapply(RowData, function(x) as.data.frame(x))
现在我按需要取消列表,但列表名称已更改。如何保留列表名称?
as.matrix(unlist(FrameData))
没有.V11
列名称的通缉输出:
[,1]
5555 1
5555 1
5555 1
5555 1
5555 3
5555 3
5555 3
.....
.....
编辑:这不是一个很好的例子,因为在我的情况下,我没有5555.V1
但只添加了数字:1,2,3,4 ......所以我实际上是这个:
[,1]
55551 1
55552 1
55553 1
55554 1
55555 3
....
555536 3
555537 3
.....
Rname <- rownames(listdata)
strtrim(Rname, nchar(Rname)-1)
问题是编号越来越大......所以问题是定义y
nchar(x)-y
答案 0 :(得分:3)
您可以重命名这样的rownames例如:
mm <- as.matrix(unlist(FrameData))
rownames(mm) <- sub('[.].*','',rownames(mm))
答案 1 :(得分:2)
library(reshape2)
melt(FrameData)
#Using as id variables
#Using as id variables
# variable value L1
#1 V1 1 5555
#2 V1 1 5555
#3 V2 1 5555
#4 V2 1 5555
#5 V3 3 5555
#6 V3 3 5555
#7 V4 3 5555
#8 V4 3 5555
#9 V1 1 5566
#10 V1 1 5566
#11 V2 1 5566
#12 V2 1 5566
#13 V3 2 5566
#14 V3 2 5566
#15 V4 2 5566
#16 V4 2 5566
答案 2 :(得分:0)
我遇到了同样的问题,但我的行名是 url,所以我无法改变命名约定,所以这里有一个对我有用的解决方案
names(listdata)<- paste(L1,"|||", sep = "")
df <- data.frame("variable" = (unlist(listdata, recursive = FALSE, use.names = TRUE)))
df1<-data.frame("variable"=df$variable, "values" = values "L1" = row.names(df))
df1$L1<- sapply(strsplit(df1$L1, split='|||', fixed=TRUE), function(x) (x[1]))