创建一个数据范围列表,然后使用它来调用有关该数据框架的详细信息



我正在尝试创建一个数据范围列表,然后使用该dataframes列表来创建有关该数据框架属性的另一个数据帧。我想通过创建一个循环来做到这一点。

我尝试创建数据范围的列表。然后,我在一个循环中使用了该列表,该列表在我的新数据框中说明每行,以数据框的名称放在一列中,以及另一列中该dataframe中的行数。


df_Months <- as.list(c(df_Jan2018, df_Feb2018, df_March2018, df_April2018, df_May2018))

for i in 1:length(df_Months) {
  Monthly_Size$Month[i] <- paste(df_Months [i])
  Monthly_Size$Size[i] <- nrow(df_Months[i])
}

如果我做nrow(df_months [1](,结果是无效的,即使我知道事实并非如此,因为如果我只是做nrow(df_jan2018(,它会给我正确的行数。

<</p> <</p> <</p>

这是使用purrrdplyr软件包的解决方案,该解决方案应适用于您的数据。您将不再需要循环。

library("purrr")
library("dplyr") 
test_df <- data.frame( a = c(1,2,3,4,NA),
                       b = c(NA,6,5,7,9))
test_df2 <- data.frame(c = c(1:10),
                       d = c(11:20))
df_list <- list(test_df = test_df, test_df2 = test_df2)
res <- map_dbl(df_list,nrow)
tibble(df = names(res), nrow = res)

输出看起来像

# A tibble: 2 x 2
  df        nrow
  <chr>    <dbl>
1 test_df      5
2 test_df2    10

一种略有不同的方法是将上述列表df_list放入tibble中,然后在该tibble上进行操作,并使用您要寻找的信息创建新行。

df_tibble <- tibble(name = names(df_list), df = df_list)
df_tibble %>% mutate(nrow = map_dbl(df, ~ nrow(.x)))
# A tibble: 2 x 3
  name     df                     nrow
  <chr>    <list>                <dbl>
1 test_df  <data.frame [5 × 2]>      5
2 test_df2 <data.frame [10 × 2]>    10

您可以继续以这种方式包含更多信息。例如列数

df_tibble %>% mutate(nrow = map_dbl(df, ~ nrow(.x)),
                     ncol = map_dbl(df, ~ ncol(.x)))

相关内容

最新更新