Слияние - очень хорошая функция: она объединяет матрицы и данные. Фреймы и возвращает данные.
Имея довольно большие матрицы символов,
Есть ли еще один хороший способ слияния -
без преобразования 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')