sapply()with with vector of values而不是1:n

时间:2013-10-16 10:52:39

标签: r sapply subset

我希望获得以下表单的sapply()声明:

a <- c(4, 9, 20, 3, 10, 30)
sapply(c(a), function(x) b[x,2] - b[x,1])

正常而不是c(a)我会1:x,但现在我只想查看a中指定的值。这可能吗?

更新:重点不在function(x)之后 - 仅作为示例。

3 个答案:

答案 0 :(得分:2)

根据文档(参见?sapply),X的第一个参数(sapply)可以是一个向量。矢量没有限制,说它必须是1:x形式。因此,您当前的代码应正确循环a

的值
sapply(c(a), function(x) b[x,2]-b[x,1]) 

请注意,您不需要c(a) - 只需a即可:

sapply(a, function(x) b[x,2]-b[x,1])

如果由于某种原因你没有与我们沟通,这不起作用,sapply不是问题,而是传递给它的功能。

答案 1 :(得分:2)

目前还不是很清楚你想要实现的目标,但我认为你不需要sapply

a <- c(4, 9, 20, 3, 10, 30)
b <- data.frame(x = 1:30, y = sqrt(1:30))
b[a, 2] - b[a, 1]
## [1]  -2.000000  -6.000000 -15.527864  -1.267949  -6.837722 -24.522774

答案 2 :(得分:1)

是否要仅对a中指定的值执行此功能,否则保留原始值?因为您没有提供b,所以我在此处展示了另一个示例。

v <- 1:40
a<-c(4,9,20,3,10,30)
sapply(v, function(x) if(x %in% a){x+1} else {x})