在a=matrix(c(1,2,3,4),nrow=2,ncol=2)和b=c('name',3)的情况下。我正在尝试合并a和b,这样第一行的结果是1 3 name 3,第二行的结果是2 4。
发布于 2019-02-16 05:11:24
每个数据帧中的行数不同。因此,cbind将很难合并数据,默认情况下会循环较短的dataframe,在本例中为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
发布于 2019-02-16 07:59:47
如果你对列表而不是数据框感到满意,这是可行的。
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
https://stackoverflow.com/questions/54719861
复制相似问题