【问题标题】:Remove first columns of every tibble in list in R [duplicate]删除R中列表中每个小标题的第一列[重复]
【发布时间】:2019-12-23 06:35:41
【问题描述】:

我有一个包含几个列的列表;我想删除每个小标题中的前 2 列(不使用 for 循环)。

 #Example data with tibble and list
 w <- c(1, 2, 3, 4, 5)
 x <- c(1, 2, 3, 4, 5)
 y <- c(1, 2, 3, 4, 5)
 z <- c(1, 2, 3, 4, 5)
 tibble <- tibble(w, x, y, z)
 list <- list(tibble, tibble, tibble, tibble)

 #Remove the first 2 columns in the tibble
 tibble1 <- subset(tibble, select=-c(1:2))
 tibble1

 #Tried this to remove the first two columns of each tibble in list 
 list1 <- sapply(list, FUN = function(x) subset(x, select=-c(1:2)) ) 
 list1

【问题讨论】:

    标签: r


    【解决方案1】:

    您可以将sapply 替换为lapply 以获得预期的列表输出

    lapply(list, FUN = function(x) subset(x, select=-c(1:2))) 
    

    使用sapply,您需要添加simplify = FALSE

    sapply(list, FUN = function(x) subset(x, select=-c(1:2)), simplify = FALSE) 
    

    另一种选择是使用[ 来表示更短更简洁的子集。

    lapply(list, `[`, -c(1, 2))
    

    【讨论】:

      【解决方案2】:

      你可以试试:

      library(purrr)
      list %>% map(subset,select=-c(1:2))
      

      【讨论】:

        【解决方案3】:

        另一种使用 Map 的基本 R 方法:

        Map(function(x){x[,-c(1:2)]}, df_list)
        

        数据:

        require("tidyverse")
        w <- c(1, 2, 3, 4, 5)
        x <- c(1, 2, 3, 4, 5)
        y <- c(1, 2, 3, 4, 5)
        z <- c(1, 2, 3, 4, 5)
        tibble <- tibble(w, x, y, z)
        df_list <- list(tibble, tibble, tibble, tibble)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-03-16
          • 1970-01-01
          • 1970-01-01
          • 2014-08-09
          • 2018-06-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多