用R中的特定迭代创建列表

时间:2018-09-07 09:51:33

标签: r list loops for-loop iteration

我有以下包含日期的数据集:

> dates
 [1] "20180412" "20180424" "20180506" "20180518" "20180530" "20180611" "20180623" "20180705" "20180717" "20180729"

我正在尝试创建一个列表,其中每个位置的名称为'Coherence_'+ dates中的第一和第二个日期。因此,在output1[1]中,我会有Coherence_20180412_20180424。然后在output1[2]中,我会有Coherence_20180506_20180518,等等。

我从此代码开始,但无法按我需要的方式工作:

output1<-list()
for (i in 1:5){
  output1[[i]]<-paste("-Poutput1=", S1_Out_Path,"Coherence_VV_TC", dates[[i]],"_", dates[[i+1]], ".tif", sep="")
}

您有什么建议吗?

M

3 个答案:

答案 0 :(得分:1)

尝试一下: 没有循环

even_indexes<-seq(2,10,2) # List of even indexes
odd_indexes<-seq(1,10,2)  # List of odd indexes
print(paste('Coherence',paste(odd_indexes,even_indexes,sep = "_"),sep = "_"))

从此处链接答案:Create list in R with specific iteration

已更新 (要在列表中获取数据)

lst=c(paste('Coherence',paste(odd_indexes,even_indexes,sep = "_"),sep = "_"))

OR

a=c(1:10)
for (i in seq(1, 9, 2)){
 print(paste('Coherence',paste(a[i],a[i+1],sep = "_"),sep = "_"))
}

输出:

[1] "Coherence_1_2"
[1] "Coherence_3_4"
[1] "Coherence_5_6"
[1] "Coherence_7_8"
[1] "Coherence_9_10"

答案 1 :(得分:1)

您可以使用 this.personService.fetchPerson().subscribe(() => { this.form.setValue({ firstName:'John', surname:'Doe' }); this.form.disable(); console.log(this.form); }); 功能对向量进行操作来创建这些模式:

paste

或者可以通过以下方式生成其他简单模式:

dates <- c("20180412", "20180424", "20180506", "20180518", "20180530", 
"20180611", "20180623", "20180705", "20180717", "20180729")
paste("Coherence", dates[1:length(dates)-1], dates[2:length(dates)], sep="_")
[1] "Coherence_20180412_20180424" "Coherence_20180424_20180506" "Coherence_20180506_20180518"
[4] "Coherence_20180518_20180530" "Coherence_20180530_20180611" "Coherence_20180611_20180623"
[7] "Coherence_20180623_20180705" "Coherence_20180705_20180717" "Coherence_20180717_20180729"

答案 2 :(得分:0)

您可以使用matrix(..., nrow=2)

dates <- c("20180412", "20180424", "20180506", "20180518", "20180530", "20180611", "20180623", "20180705", "20180717", "20180729")
paste0("Coherence_", apply(matrix(dates, 2), 2, FUN=paste0, collapse="_"))
# > paste0("Coherence_", apply(matrix(dates, 2), 2, FUN=paste0, collapse="_"))
# [1] "Coherence_20180412_20180424" "Coherence_20180506_20180518" "Coherence_20180530_20180611" "Coherence_20180623_20180705"
# [5] "Coherence_20180717_20180729"