r - 对多个向量使用 mapply,但每个元素只使用一次
问题描述
我尝试迭代多个向量,例如 Pythons “for x, y, z in zip(lia, lib, lic): ...”,并找到mapply
了我想要的,但它返回太多。
例子:
lia = c(1,2,3)
lib = c(4,5,6)
lic = c(7,8,9)
mapply(function(x, y, z) print(sprintf('%f %f %f', x, y, z)), lia, lib, lic )
结果是:
[1] "1.000000 4.000000 7.000000"
[1] "2.000000 5.000000 8.000000"
[1] "3.000000 6.000000 9.000000"
[[1]]
[1] "1.000000 4.000000 7.000000"
[[2]]
[1] "2.000000 5.000000 8.000000"
[[3]]
[1] "3.000000 6.000000 9.000000"
前三行是我所期望的。为什么它返回更多?我将如何正确地做到这一点?
解决方案
当您使用时print
, mapply
仍然有您可以制作的自己的输出invisible
。但是,也许您根本不需要print
。
尝试以下两种方法之一:
invisible(mapply(function(x, y, z) print(sprintf('%f %f %f', x, y, z)), lia, lib, lic))
# [1] "1.000000 4.000000 7.000000"
# [1] "2.000000 5.000000 8.000000"
# [1] "3.000000 6.000000 9.000000"
mapply(function(x, y, z) sprintf('%f %f %f', x, y, z), lia, lib, lic)
# [1] "1.000000 4.000000 7.000000" "2.000000 5.000000 8.000000" "3.000000 6.000000 9.000000"
推荐阅读
- python - 任务计划程序和 BAT 脚本无法正常工作
- logstash - 如果匹配类路径,则使用 grok 添加字段
- key-value - 您是否应该将非机密配置与机密一起存储在保险库之类的商店中?
- python - 为什么 SymPy 不喜欢重新定义变量?
- java - 使用 mvn liquibase:diff 时如何禁用删除表和列?
- c# - EF 6:调用 context.Database.ExecuteSqlCommand(...) 后更新 DBSet / Entities
- c++ - 使用crypto++的HMAC解密plantext
- python - Pycharm 无法自动完成某些模块
- python-3.x - 下载链接中的空格 python beautifulsoup
- python - 如何从给定的输入中检索日期