使用* apply函数时,确定正在处理的元素

时间:2012-03-23 04:06:16

标签: r

据推测,R在运行* apply函数时知道它正在处理列表的哪个成员,向量的元素或矩阵行等。是否可以在函数中使用此索引,而无需采用如下的一些解决方法:

fruit <- c("Bananas", "Oranges", "Avocados", "Celeries?")
sapply(fruit, function(x) 
   paste(x, "are fruit number", which(fruit==x)))

these等其他解决方法在提及类似问题时发布了?

希望[毫无结果?]更优雅。

3 个答案:

答案 0 :(得分:4)

我宁愿写

sapply(seq_along(fruit), function(ii) paste(fruit[ii], "are fruit number", ii))

答案 1 :(得分:3)

您可以将索引而不是矢量传递给sapply;

fruit <- c("Bananas", "Oranges", "Avocados", "Celeries?")
sapply(seq_along(fruit), function(x) paste(fruit[x], "are fruit number", x))

答案 2 :(得分:2)

也许mapply是一个有用的替代品? (虽然这里并不需要)

fruit <- c("Bananas", "Oranges", "Avocados", "Celeries?")
mapply(paste, fruit, "are fruit number", seq_along(fruit))