我有以下 3 個資料框,每個資料框都有帶名稱的列。我想組合它們并保留列名。當我使用我發現的用于組合資料幀的補丁時,它會將該名稱放在任何沒有至少 2 列的資料幀上。我怎樣才能保留名字?
x<-data.frame(mean(1:10))
names(x)[names(x) == 'mean.1.10.'] <- 'var.name'
y<-data.frame(1:4)
names(y)[names(y) == 'X1.4'] <- 'var.name2'
z<-data.frame(matrix(1:10,5,2))
names(z)[names(z) == 'X1'] <- 'var.name3'
names(z)[names(z) == 'X2'] <- 'var.name4'
list_datf <- list(x, y, z)
n_r <- seq_len(max(sapply(list_datf, nrow)))
NEW <- do.call(cbind, lapply(list_datf, `[`, n_r, ))
uj5u.com熱心網友回復:
您需要包含drop = FALSE在索引步驟中,以便您系結在一起的事物保留其所有維度。我無法通過將drop = FALSE額外引數傳遞給 來找出一種方法來做到這一點[,所以我轉而使用匿名函式。
NEW <- do.call(cbind, lapply(list_datf, function(x) x[n_r, , drop = FALSE]))
或者,您可以將組件轉換為 tibbles,它(與資料框不同)永遠不會洗掉“不需要的”維度:
NEW <- do.call(cbind, lapply(list_datf, function(x) tibble::as_tibble(x)[n_r, ]))
如果你想要完整的 tidyverse:
library(dplyr)
list_datf %>% purrr::map(~ tibble::as_tibble(.)[n_r, ]) %>% bind_cols()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/403830.html
標籤:
