我希望获得以下表单的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)
之后 - 仅作为示例。
答案 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})