>>> [(x*y) for (x,y) in zip(range(3), (1,11,111))]
[0, 11, 222]
不是这样
> data.frame(0:2,c(1,11,111))
X0.2 c.1..11..111.
1 0 1
2 1 11
3 2 111
> data.frame(0:2,c(1,11,111))->a
> a[1]*a[2]
X0.2
1 0
2 11
3 222
但像这样
lapply(a, function(x)
{ ...how can I access here the parameters of x?
(not using x[1] or x[2])
}
最佳答案
对于一般模式,也许
Map(`*`, 0:2, c(1, 11, 111))
或者
unlist(Map(`*`, 0:2, c(1, 11, 111)))
或更明确地
Map(function(x, y) x*y, 0:2, c(1, 11, 111))
(我比 Steve 的
Map
更喜欢 mapply
,因为它默认不简化,打字更短,并且可以很好地与手册页上记录的其他功能函数配合使用,例如 Reduce
、 Filter
和 Negate
)。由于删除了特定问题的早期答案,它只是
0:2 * c(1, 11, 111)
,这会更有效率。关于python - 用 R 重写这个列表理解,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8745972/