【问题标题】:loop subset through data frames通过数据帧循环子集
【发布时间】:2020-04-03 23:28:09
【问题描述】:

我有 20 个数据帧,我想将其中的 4 个变量子集化到一个新的数据帧中。

DF1 <- subset(Circle1.csv, select = c(col1, col2, col3, col4))
DF2 <- subset(Circle2.csv, select = c(col1, col2, col3, col4))

我不想写 20 次;有没有办法循环这个?

非常感谢

【问题讨论】:

    标签: r loops subset


    【解决方案1】:

    使用for 循环

    nrows <- 1:4 # number of rows to subset
    colNames <- c('col1', 'col2', 'col3', 'col4') # column names
    
    # assign subset of dataframe
    for (i in 1:20) {
      assign(x = paste0('DF', i), value = get(paste0('Circle', i, '.csv'))[nrows, colNames])
    }
    

    【讨论】:

      【解决方案2】:

      通过循环 list 将所有对象放入 listsubset 一次

      lst1 <- lapply(mget(sprintf("Circle%d.csv", 1:20)), subset, 
                  select = c(col1, col2, col3, col4))
      

      或者dplyr/purrr

      library(purrr)
      library(dplyr)
      lst1 <- map(mget(sprintf("Circle%d.csv", 1:20)), ~ .x %>% 
                            select(col1:col4))
      

      【讨论】:

        猜你喜欢
        • 2013-11-21
        • 1970-01-01
        • 2019-05-06
        • 2020-07-22
        • 2021-04-26
        • 2022-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多