我应用一个简单的匿名函数来返回序列1:5上的c(x,x + 5)
我期望看到c(1,6,2,7,3,8,4,9,5,10)(子结果的连接),但结果向量被不必要地排序。这是做什么的,我该如何预防?
> (function(x) c(x,x+5)) (1:5)
[1] 1 2 3 4 5 6 7 8 9 10
然而,对每个单独的参数应用函数是正确的:
> (function(x) c(x,x+5)) (1)
[1] 1 6
> (function(x) c(x,x+5)) (2)
[1] 2 7
...
> (function(x) c(x,x+5)) (5)
[1] 5 10
答案 0 :(得分:2)
另一种方法:
bar <- function(x) {
as.vector(matrix(c(x,x+5),nrow=2,byrow=TRUE))
}
答案 1 :(得分:2)
这样就可以了:
unlist(lapply(1:5, function(x) c(x, x+5)))
答案 2 :(得分:1)
您可以尝试这样来欺骗操作顺序:
foo<-function(x) {
bar<-cbind(x,x+5)
as.vector(t(bar))
}
foo(1:5)
或以一行形式:
(function(x) as.vector(t(cbind(x,x+5)))) (1:5)