从不同向量/数据帧的nrow结果创建数据帧

时间:2018-05-02 13:53:20

标签: r

我在不同的data.frames中有一些向量。我想计算每个向量的观察数量并从中列出一个列表。第一列应为数据帧名称,第二列应为每个数据帧中的观察数量。最小的例子可能是,

x <- c(1, 3, 4, 5, 6)
x1 <- data.frame(x)
y <- c(3, 9)
y1 <- data.frame(y)
z <- c(23, 43, 23, 12, 1, 3, 7,8,9)
z1 <- data.frame(z)

a <- nrow(x1)
b <- nrow(y1)
c <- nrow(z1)

d <- c(a, b, c)
e <- data.frame(d)
e

输出e看起来像这样,

> e
  d
1 5
2 2
3 9

但是,我想以这种方式,

>  e
  df.name nobs
1      x1    5
2      y1    2
3      z1    9

任何帮助都会受到高度赞赏。

2 个答案:

答案 0 :(得分:2)

这是你想要的吗?

x <- c(1, 3, 4, 5, 6)
x1 <- data.frame(x)
y <- c(3, 9)
y1 <- data.frame(y)
z <- c(23, 43, 23, 12, 1, 3, 7,8,9)
z1 <- data.frame(z)

library(purrr)
targlist <- list(x1,y1,z1)
data.frame(
    names=unlist(map(targlist,names)),
    nobs=unlist(map(targlist,nrow))
)

如果有多个col names行为不端。也许你想要names=paste0("x",1:length(targlist))。但这对你的榜样来说很有趣。

答案 1 :(得分:2)

我们可以使用base R

执行此操作
stack(lapply(mget(c("x1", "y1", "z1")), nrow))[2:1]