使用在整个站点中找到的不同解决方案更新:
我仍然无法使用堆栈和ldply函数实现所需的输出:
所需的输出如下所示:
Dataset Samples
1 WGS nrow(WGS.ped)
2 WES nrow(WES.ped.exp)
3 MIPS nrow(MIPS.ped.exp)1) ldply:如何为列V1和.id分配名称
ldply(list(WGS=WGS.ped, WES=WES.ped.exp, MIPS=mips.ped.exp),
function(l)(Samples=nrow(l)))
.id V1
1 WGS 3908
2 WES 26367
3 MIPS 141932) ldply:如何为列V1和.id分配名称
ldply(list(WGS=WGS.ped, WES=WES.ped.exp, MIPS=mips.ped.exp), nrow)
.id V1
1 WGS 3908
2 WES 26367
3 MIPS 141933) lapply %>% as.data.frame:将数据帧名称作为列返回,而不是作为第一列'Dataset‘返回。
lapply(list(WGS=WGS.ped, WES=WES.ped.exp, MIPS=mips.ped.exp), nrow) %>%
as.data.frame
WGS WES MIPS
1 3908 26367 141934) sapply %>% stack:如何逆转列的顺序?以及如何使用stack指示列名
sapply(list(WGS=WGS.ped, WES=WES.ped.exp, MIPS=mips.ped.exp), nrow) %>%
stack()
values ind
1 3908 WGS
2 26367 WES
3 14193 MIPS5) map %>% as.data.frame:将数据帧名称作为列返回,而不是作为第一列'Dataset‘返回。
map(list(WGS=WGS.ped, WES=WES.ped.exp, MIPS=mips.ped.exp), nrow) %>%
as.data.frame()
WGS WES MIPS
3908 26367 14193 我有三个数据帧WGS.ped, WES.ped,exp和MIPS.ped.exp。
我想要创建一个新的数据框架,它总结了它们的行数/每个数据帧中的行总数。
所需的输出如下所示:
Dataset Samples
WGS nrow(WGS.ped)
WES nrow(WES.ped.exp)
MIPS nrow(MIPS.ped.exp)什么是实现这一目标的有效和可重复的方法,最好是使用dplyr?
谢谢!
发布于 2018-04-21 22:36:29
好吧,这特别有趣。下面是一个只需要dplyr的修改后的解决方案。它利用了基函数mget,它在传递给我们要查找的名称向量之后,从我们的R环境中获取数据的命名列表。
在此之后,只需在.id中使用bind_rows()来创建dataframe名称的“虚拟”列,这样我们就可以灵活地分组和总结。
library(dplyr)
# Load some built-in dataframes to use as an example
df1 <- mtcars
df2 <- iris
df3 <- PlantGrowth
names_list <- c("df1","df2","df3")
summary_df <- mget(names_list, envir = globalenv()) %>%
bind_rows(.id = "Dataset") %>%
group_by(Dataset) %>%
summarise(Samples = n())
# Output
# A tibble: 3 x 2
Dataset Samples
<chr> <int>
1 df1 32
2 df2 150
3 df3 30发布于 2018-04-22 01:17:00
下面是一个基本的r函数,它将总结传递给它的数据框架:
summarize_data <- function(...) {
data <- list(...)
call <- as.character(match.call())
names <- gsub(".*\\((.*)\\).*", "\\1", call)[-1]
data.frame(names = names,
rows = sapply(data, nrow),
stringsAsFactors = FALSE)
}这会得到:
> summarize_data(mtcars, iris)
names rows
1 mtcars 32
2 iris 150https://stackoverflow.com/questions/49960605
复制相似问题