在a = matrix(c(1,2,3,4),nrow = 2,ncol = 2)和b = c('name',3)的情况下。我正在尝试合并a和b,使结果在第一行中为[1 3 name 3],在第二行中为[2 4]。
答案 0 :(得分:0)
每个数据帧中的行数不同。因此,cbind将很难合并数据,并且默认情况下将循环较短的数据帧,在这种情况下为b。 我建议将行名添加为列,然后对其进行绑定。默认情况下,full_join将为缺少绑定值的数据帧生成NA值。该问题部分与Add (not merge!) two data frames with unequal rows and columns相同,因此您可能会在此找到更多帮助。
# Load packages
library(tidyverse)
library(magrittr) # To use the inplace assignment operator (%<>%)
# Create dataframes
a <- data.frame(1:2,3:4)
b <- merge('name', 3)
# Create rowname column for each dataframe
a %<>% tibble::rownames_to_column()
b %<>% tibble::rownames_to_column()
# Use 'full join' to bind dataframes together
c <- dplyr::full_join(a, b, by=rowname) %>%
# Remove the rowname column
dplyr::select(-rowname)
# Print c
print(c)
X1.2 X3.4 x y
1 1 3 name 3
2 2 4 <NA> NA
答案 1 :(得分:0)
如果您对列表而不是数据框感到满意,那么它将起作用。
a <- matrix(c(1,2,3,4),nrow=2,ncol=2)
b <- c('name',3)
c <- list(a[,1],a[,2],b[1],b[2] )
如果您需要数据框, 您必须通过在间隙中填充一些东西来使第一行和第二行具有相同的列数。
d <- as.data.frame(c)
d[2,3:4] <- NA