使用特定迭代在R中创建列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用特定迭代在R中创建列表相关的知识,希望对你有一定的参考价值。

我有一个包含10个文件的文件夹,我在R中导入为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但1比1,而不是我想要的方式。

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

你有什么建议吗?像i+2这样的东西?

答案

这会接近你需要的吗?

library(tidyverse)

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

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

另一答案

试试这个例子:

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"
另一答案

最简单的方法:

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
另一答案

添加您的所有想法我也设法找到了解决方案:

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="")
}

以上是关于使用特定迭代在R中创建列表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用引导程序和 for 循环在 django 中创建电影片段?

在片段中创建自定义列表视图时出错。必需的活动,找到的片段

在片段中创建自定义列表视图时出错所需活动,找到片段

在片段android中创建listview

如何膨胀由 Android Studio 向导在 Activity 中创建的片段(列表)?

Android App 在片段中创建 ListView 引用时关闭