r - For循环仅返回R中的最后一个值
问题描述
我在 R 中构造了一个 for 循环。但它只返回最后一个值。例如
asd <- c(0)
for (i in c(1,5)) {
asd <- HTML("<tr>
<td> '+d[",i,"]+' </td>
<td>' + d[",i+1,"] + '</td>
<td>' + d[",i+2,"] + '</td>
<td>' + d[",i+3,"] + '</td>
</tr>")
}
输出
asd
<tr><td> '+d[ 5 ]+' </td><td>' + d[ 6 ] + '</td><td>' + d[ 7 ] + '</td><td>' + d[ 8 ] + '</td></tr>
预期产出
'<tr><td> '+d[ 1 ]+' </td><td>' + d[ 2 ] + '</td><td>' + d[ 3 ] + '</td><td>' + d[ 4 ] + '</td></tr>
<tr><td> '+d[ 5 ]+' </td><td>' + d[ 6 ] + '</td><td>' + d[ 7 ] + '</td><td>' + d[ 8 ] + '</td></tr>'
有没有办法达到预期的输出
解决方案
这会生成您预期的输出。
asd <- purrr::map_chr(c(1L,5L), ~ {
paste0("<tr>",
purrr::map_chr(seq(.x,.x + 3,1), ~ {
glue::glue("<td>' + d[{.x}] + '</td>")
}) %>% str_c(collapse = "")
,
"</tr>")
})
asd
[1] "<tr><td>' + d[1] + '</td><td>' + d[2] + '</td><td>' + d[3] + '</td><td>' + d[4] + '</td></tr>"
[2] "<tr><td>' + d[5] + '</td><td>' + d[6] + '</td><td>' + d[7] + '</td><td>' + d[8] + '</td></tr>"
当然可以有基于for
循环的解决方案,但我认为如果你使用 R,学习使用 apply/map 函数是值得的。
推荐阅读
- java - 将 BufferedImage 写入磁盘的最快方法
- c - 两个进程写入同一个文件
- javascript - hrefs 不会循环下载文件
- arrays - 如何解决运行时错误 9,获取路径中的最后一个文件夹时下标超出范围
- php - 上传后图像显示为黑色
- json - 来自 API 的数据显示在控制台中,但没有显示在 DOM 中,为什么?
- c# - Jquery .post 方法正在发送一个空值。如何将实际值传递给控制器?
- php - 如何在 Symfony4 api-platform 中隐藏实体属性
- delphi - 调整 Tbitmap 大小时的白色图像
- gnuplot - 气泡图 - 如何使用?