关于r:从不同向量/数据框的nrow结果创建数据框


Creating a data frame from nrow results of different vectors/data frames

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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是这样的,

1
2
3
4
5
> e
  d
1 5
2 2
3 9

但是,我想要这样,

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

任何帮助将不胜感激。


我们可以用 base R

做到这一点

1
stack(lapply(mget(c("x1","y1","z1")), nrow))[2:1]

这是你想要的吗?

1
2
3
4
5
6
7
8
9
10
11
12
13
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))
)

如果有多个列 names 会出现异常。也许你想要 names=paste0("x",1:length(targlist)) 代替。但这对你的例子来说很有趣。