我试图创建一个名为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