2017-04-12 134 views
1

我是R新手。我有多個向量,我想將它們存儲在for循環的列表中。我試過使用[],[[]]和(),我得到一個錯誤,指出沒有找到dateRange。你能幫我解決我的代碼嗎?使用for循環將多個向量存儲在列表中

dateRange1 <- c('2015-01','2015-12') 
dateRange2 <- c('2016-01','2016-12') 
ind <- list() 

for (a in 1:2) { 
    ind[a] <- dateRange(a) 
} 

ind 

謝謝你,祝你有美好的一天!

+0

這不是很清楚,你是否需要這樣的日期= dateRange = list(c('2015-01','2015-12'),c('2016-01','2016-12 '))'? –

+0

如果我不清楚,我很抱歉。但我想將所有的dateRange存儲到名爲「ind」的列表中,所以當我訪問ind [[1]]時,它將顯示dateRange1和ind [[2]]的值,它將顯示dateRange2中的值。希望這是有道理的。 – aotearoa

+0

如何獲取多個向量?在此過程中,您可以生成您的列表。 – jogo

回答

3

如果你真的想要的是,使用get()mget()

ind <- mget(paste0("dateRange", 1:2)) 

Normaly你這麼一堆載體的,如果你在什麼地方使用assign()。這是您必須重構數據生成過程的關鍵。 (通常使用assign()不是一個好主意。「如果問題是:使用assign()答案几乎是:no」)。
Why is using assign bad?

+0

感謝您關注此事。這個mget的功能也適用於如果我有幾個輸入$ daterange在SHY R R /只想知道dateRangeInput。 – aotearoa

2

您沒有稱爲dateRange的對象。做你想用的東西evalparse。設置a <- 1然後單獨運行碎片以查看它們的功能。請檢查paste0("dateRange", a)做什麼,然後parse(text = paste0("dateRange", a)),然後eval(parse(text = paste0("dateRange", a)))

dateRange1 <- c('2015-01','2015-12') 
dateRange2 <- c('2016-01','2016-12') 
ind <- list() 

for (a in 1:2) { 
    ind[[a]] <- eval(parse(text = paste0("dateRange", a))) 
} 

ind 
+0

謝謝傑克。這是我正在尋找的。欣賞你的時間。 – aotearoa