代码之家  ›  专栏  ›  技术社区  ›  GCGM

在R中创建具有特定迭代的列表

  •  0
  • GCGM  · 技术社区  · 6 年前

    S

    S<-list.files(S1_path, recursive = TRUE, full.names = TRUE, pattern="S1") 
    
    > S
     [1] "/shared/Training/EARSEL0918_UrbanClassification_Germany/Original//S1A_IW_SLC__1SDV_20180412T171648_20180412T171715_021437_024E95_BDA1.zip"
     [2] "/shared/Training/EARSEL0918_UrbanClassification_Germany/Original//S1A_IW_SLC__1SDV_20180424T171648_20180424T171715_021612_02540A_BB21.zip"
     [3] "/shared/Training/EARSEL0918_UrbanClassification_Germany/Original//S1A_IW_SLC__1SDV_20180506T171649_20180506T171716_021787_025996_98AB.zip"
     [4] "/shared/Training/EARSEL0918_UrbanClassification_Germany/Original//S1A_IW_SLC__1SDV_20180518T171649_20180518T171716_021962_025F27_A15C.zip"
     [5] "/shared/Training/EARSEL0918_UrbanClassification_Germany/Original//S1A_IW_SLC__1SDV_20180530T171650_20180530T171717_022137_0264C8_5D94.zip"
     [6] "/shared/Training/EARSEL0918_UrbanClassification_Germany/Original//S1A_IW_SLC__1SDV_20180611T171651_20180611T171718_022312_026A3D_BBFC.zip"
     [7] "/shared/Training/EARSEL0918_UrbanClassification_Germany/Original//S1A_IW_SLC__1SDV_20180623T171652_20180623T171719_022487_026F7C_450E.zip"
     [8] "/shared/Training/EARSEL0918_UrbanClassification_Germany/Original//S1A_IW_SLC__1SDV_20180705T171652_20180705T171719_022662_027499_1B8F.zip"
     [9] "/shared/Training/EARSEL0918_UrbanClassification_Germany/Original//S1A_IW_SLC__1SDV_20180717T171653_20180717T171720_022837_0279EC_5E5E.zip"
    [10] "/shared/Training/EARSEL0918_UrbanClassification_Germany/Original//S1A_IW_SLC__1SDV_20180729T171654_20180729T171721_023012_027F72_97F6.zip"
    

    使用 S公司 作为输入,我想创建两个新的不同列表。把文件放在适当位置的人 [1] , [3] , [5] [7] , [9] [2] , [4] , [6] , [8] [10] .

    我正在尝试修改我以前的代码。在这里,我创建了一个空列表,在上面循环填充 S公司

    input<-list()
    for (i in S){
      input[[i]]<-paste("-Pinput1=", i, sep="")
    }
    

    你有什么建议吗。有点像 i+2 ?

    4 回复  |  直到 6 年前
        1
  •  1
  •   Vlad C.    6 年前

    这能接近你需要的吗?

    library(tidyverse)
    
    list1 <- S[seq(1, 9, 2)] %>% 
      map(~paste0("-Pinput1=", .x))
    

    第一行是从列表中提取奇数位置,第二行是粘贴字符串 -Pinput1=

        2
  •  1
  •   zx8754 John Colby    6 年前

    试试这个例子:

    S <- c("a", "b", "c", "d")
    
    S_odd <- paste0("-Pinput1=", S[ c(TRUE, FALSE) ])
    S_even <- paste0("-Pinput1=", S[ c(FALSE, TRUE) ])
    
    S_odd
    # [1] "-Pinput1=a" "-Pinput1=c"
    
    S_even
    # [1] "-Pinput1=b" "-Pinput1=d"
    
        3
  •  1
  •   Saurabh Chauhan    6 年前

    最简单的方法:

    even_indexes<-seq(2,10,2) # List of even indexes
    odd_indexes<-seq(1,10,2)  # List of odd indexes
    paste0("-Pinput1=",df[odd_indexes,])  # Name with odd index
    paste0("-Pinput1=",df[even_indexes,]) # Name with even index
    
        4
  •  0
  •   GCGM    6 年前

    input<-list()
    for (i in S[seq(1, 10, 2)]){
      input[[i]]<-paste("-Pinput1=", i, sep="")
    }
    

    input<-list()
    for (i in S[seq(2, 10, 2)]){
      input[[i]]<-paste("-Pinput1=", i, sep="")
    }