沿着(c()中的i)R的向量循环

沿着(c()中的i)R的向量循环,r,for-loop,vector,R,For Loop,Vector,我有一个这样的循环: f<-c("a","b","c","d") h<-c() for(i in c(3,2,4,1)){ h[i]<-f[i] } 但我想: “c”“b”“d”“a” 我该怎么做? 谢谢我们不需要循环来完成此操作 f[c(3,2,4,1)] #[1] "c" "b" "d" "a" 如果确实需要循环,则初始化一个长度与“f”相同的向量“h”,然后循环索引序列,根据“ind”对“f”进行子集划分,并将其分配给“h”的每个元素 h <- charact

我有一个这样的循环:

f<-c("a","b","c","d")
h<-c()
for(i in c(3,2,4,1)){
h[i]<-f[i]
}
但我想: “c”“b”“d”“a”

我该怎么做?
谢谢

我们不需要循环来完成此操作

f[c(3,2,4,1)]
#[1] "c" "b" "d" "a"

如果确实需要循环,则初始化一个长度与“f”相同的
向量
“h”,然后循环索引序列,根据“ind”对“f”进行子集划分,并将其分配给“h”的每个元素

h <- character(length(f))
ind <- c(3, 2, 4, 1)
for(i in seq_along(ind)) {
   h[i] <- f[ind[i]]
}

h
#[1] "c" "b" "d" "a"

hLike@akrun说你不需要循环,但这可能是你真正问题的简化版本,所以我将尝试展示你应该如何处理循环

代码的错误在于,在循环中,您正在连续设置

h[3] <- f[3]
h[2] <- f[2]
h[4] <- f[4]
h[1] <- f[1]

然后将值分配给已经存在的
h
元素。

为什么需要循环
f[c(3,2,4,1)]#[1]“c”b“d”a“
将给出答案这不会改变输出,但为了清楚起见,示例循环的分配顺序与“您应该做什么”给出的顺序不同布洛克。@Renu你说得对,我没注意到。我真正的意思是(我在1:4中)的
。更正。
h[3] <- f[3]
h[2] <- f[2]
h[4] <- f[4]
h[1] <- f[1]
h[1] <- f[3]
h[2] <- f[2]
h[3] <- f[4]
h[4] <- f[1]
f <- c("a","b","c","d")
inx <- c(3,2,4,1)
h <- c()

for(i in 1:4){
    j <- inx[i]
    h[i] <- f[j]
}
for(i in 1:4){
    h[i] <- f[inx[i]]
}
h <- character(length(f))