我試圖創建一個名爲requests
的請求列表。我有一個數百種產品的列表,但我簡化了這個示例代碼。創建列表連接列表元素和字符串R
products <- list()
products[[1]] <- c("77295T", "67619Q", "9528QR")
products[[2]] <- c("B7295T", "676193")
requests <- vector("list",length(products[[1]]))
length(requests)
i <- 1
for (i in 1:(length(products[[1]]))) {
requests[[i]] <- cat('"',noquote(products[[1]][[i]]),'~XPORT"', sep = '')
}
結果:
"77295T~XPORT""67619Q~XPORT""9528QR~XPORT"
最終結果我尋找是長度爲3的具有以下三個元素的請求列表:
requests[[1]]
"77295T~XPORT"
requests[[2]]
"67619Q~XPORT"
requests[[3]]
"9528QR~XPORT"
背景:最後,我想requests
成爲一個嵌套列表(列表的列表);在我的數據集products
是一個列表,所以這就是爲什麼我提供products[[2]]
,即使我的問題涉及到只是迭代products[[1]]. Replacing
產品[[1]]`與同等產品1也創建相同的輸出。該代碼是在這裏:
products1 <- c("77295T", "67619Q", "9528QR")
i <- 1
for (i in 1:(length(products1))) {
requests[[i]] <- cat('"',noquote(products1[[i]]),'~XPORT"', sep = '')
}
這更簡單的代碼提供了相同的結果:
"77295T~XPORT""67619Q~XPORT""9528QR~XPORT"
我也知道for循環我打電話可能沒有必要。我正在逐漸學習如何「矢量化」我的R代碼。將不勝感激這個代碼中的任何進一步矢量優雅的建議。
可能'請求< - as.list(paste(products [[1]],「XPORT」,sep =「〜」))'是最簡單的答案。 – lmo
'lapply(產品[[1]],函數(x){paste0(x,「〜XPORT」)})'也應該工作 –
@lmo你的意思是,這段代碼沒有循環,對嗎?這就是訣竅。 – mrlcpa