R 对多个向量使用mapply,但对每个元素仅使用一次

R 对多个向量使用mapply,但对每个元素仅使用一次,r,mapply,R,Mapply,我尝试迭代多个向量,比如python“在zip(lia,lib,lic)中的x,y,z:…”并找到了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" [

我尝试迭代多个向量,比如python“在zip(lia,lib,lic)中的x,y,z:…”并找到了
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(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"

打印
太过分了,请不要打印。谢谢!我的问题更复杂,但在你的帮助下,我发现我的输入是错误的。对于data.frame“df”,我必须使用:df$some_name或df['some_name']]来创建输入向量。df['some_name']没有失败,但给了我一个不同组合的矩阵输出。也许你会发现
?和
很有用。