合并是一个非常好的功能:它合并矩阵和data.frames,并返回一个data.frame。R:合并矩阵(不是数据帧)
有相当大的字符矩阵, 有合并其他好办法 - 没有data.frame转换?
注释1: 小函数合并与基质或data.frame命名矢量。向量的元素可以链接到多个条目中的矩阵:
expand <- function(v,m,by.m,v.name='v',...) {
df <- do.call(rbind,lapply(names(v),function(x) {
pos <- which(m[,by.m] %in% v[x])
cbind(x,m[pos,],...)
}))
colnames(df)[1] <- v.name
df
}
实施例:
v <- rep(letters,each=3)[seq_along(letters)]
names(v) <- letters
m <- data.frame(a=unique(v),b=seq_along(unique(v)),stringsAsFactors=F)
expand(v,m,'a')
你不需要'cbind'和'rbind'吗? – mbq 2010-09-15 14:08:12
不,它们是不够的:当有一个m:n的关系时,它们不会正确地展开/合并 – 2010-09-17 11:51:45