【问题标题】:Getting a column name from each dataframe in a list从列表中的每个数据框中获取列名
【发布时间】:2020-09-06 21:17:32
【问题描述】:

我的数据如下:

library(data.table)   
df <- fread(
    "A   B  C  D  E  F  iso   year   
     0   A   NA  1  NA  NA  NLD   2009   
     1   Y   NA  2  NA  NA  NLD   2009   
     0   Q   NA  3  NA  NA  AUS   2011   
     1   NA  NA  4  NA  NA  AUS   2011   
     0   0   NA  7  NA  NA  NLD   2008   
     1   1   NA  1  NA  NA  NLD   2008   
     0   1   NA  3  NA  NA  AUS   2012   
     0   NA  1   NA  1  NA  ECU   2009   
     1   NA  0   NA  2  0   ECU   2009   
     0   NA  0   NA  3  0   BRA   2011   
     1   NA  0   NA  4  0   BRA   2011   
     0   NA  1   NA  7  NA  ECU   2008   
     1   NA  0   NA  1  0   ECU   2008   
     0   NA  0   NA  3  2   BRA   2012   
     1   NA  0   NA  4  NA  BRA   2012",
   header = TRUE
)

# Creates a list of dataframes
df_iso <- split(df, df$iso) # Creates a list of dataframes

我现在想在列表的每个数据集中提取第 8 列的列名。

显然在这种情况下它们都是"year",但在我的实际数据中它们是不同的。

如果我这样做colnames(df_iso[[1]])[8] 我得到"year",所以我尝试了:

我试过了:

names <- list()
for (i in length(df_iso)) { 
     names <- as.vector(append(names , colnames(df_iso[[i]])[8]))
 }

令人惊讶的是,这不起作用。我想要一个列表或向量,df_iso 中的每个 data.frame 都给我“年份”,有人可以帮忙吗?

【问题讨论】:

    标签: r list data.table names


    【解决方案1】:

    一种可能是:

    lapply(df_iso, function(x) names(x)[8])
    
    $AUS
    [1] "year"
    
    $BRA
    [1] "year"
    
    $ECU
    [1] "year"
    
    $NLD
    [1] "year"
    

    【讨论】:

    • 您需要指定for (i in 1:length(df_iso))。但这不需要 for 循环。
    【解决方案2】:

    使用 sapply 的解决方案:

    sapply(df_iso, function(i){
    colnames(i)[8]
    })
    
       AUS    BRA    ECU    NLD 
    "year" "year" "year" "year"
    

    【讨论】:

      【解决方案3】:

      purrr 的选项

      library(purrr)
      map(df_iso, ~ names(.x)[8])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-14
        • 1970-01-01
        • 1970-01-01
        • 2022-01-26
        • 2015-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多