R 如何返回奇数位置的元素?

R 如何返回奇数位置的元素?,r,R,假设我们有: vector <- c(3:10) 结果2 3 5 7 9 10 8 6 4 但是我需要一个简短的函数,不能使用loop您可以尝试这样的方法 vector <- 3:10 n <- length(vector) c(vector[seq(n) %% 2 == 1], rev(vector[seq(n) %% 2 == 0])) ## [1] 3 5 7 9 10 8 6 4 vector你可以试试这样的东西 vector <- 3:10

假设我们有:

vector <- c(3:10)
结果2

3 5 7 9 10 8 6 4

但是我需要一个简短的函数,不能使用loop

您可以尝试这样的方法

vector <- 3:10
n <- length(vector)
c(vector[seq(n) %% 2 == 1], rev(vector[seq(n) %% 2 == 0]))
## [1]  3  5  7  9 10  8  6  4

vector你可以试试这样的东西

vector <- 3:10
n <- length(vector)
c(vector[seq(n) %% 2 == 1], rev(vector[seq(n) %% 2 == 0]))
## [1]  3  5  7  9 10  8  6  4

vector我想你最直接的方法是

vector <- 3:10

result <- vector[c(TRUE, FALSE)]
result2 <- c(vector[c(TRUE, FALSE)], rev(vector[c(FALSE, TRUE)]))

vector我想你最直接的方法是

vector <- 3:10

result <- vector[c(TRUE, FALSE)]
result2 <- c(vector[c(TRUE, FALSE)], rev(vector[c(FALSE, TRUE)]))
vector快一点:

n <- length(vector)/2
result <- vector[c(2*(1:n)-1,2*(n:1))]
快一点:

n <- length(vector)/2
result <- vector[c(2*(1:n)-1,2*(n:1))]

我不明白-两个回答这个问题的人都不能编辑它?我不明白-两个回答这个问题的人都不能编辑它?
> vector <- 3:10

> system.time(
+   for ( i in 1:100000 )
+   {
+     n <- length(vector)/2
+     result_A <- vector[c(2*(1:n)-1,2*(n:1))]
+   }
+ )
   user  system elapsed 
   0.64    0.00    0.65 

> system.time(
+   for ( i in 1:100000 )
+   {
+     n <- length(vector)
+     result_B <- c(vector[seq(n) %% 2 == 1], rev(vector[seq(n) %% 2 == 0]))
 .... [TRUNCATED] 
   user  system elapsed 
  10.78    0.00   10.86 

> system.time(
+   for ( i in 1:100000 )
+   {
+     result_C <- c(vector[c(TRUE, FALSE)], rev(vector[c(FALSE, TRUE)]))
+   }
+ )
   user  system elapsed 
   2.81    0.00    2.83 
> result_A
[1]  3  5  7  9 10  8  6  4
> result_B
[1]  3  5  7  9 10  8  6  4
> result_C
[1]  3  5  7  9 10  8  6  4
>