繁体   English   中英

从 R 中的嵌套循环中提取向量作为向量

[英]Extract vectors from nested loops in R as vectors

我正在学习使用 R 并且我正在尝试从嵌套循环中提取 cont、p0 和 pf 变量作为此代码中的 3 个不同向量。

v<-c("a","b","c","d","e","f","g","h")
n<-length(v)
mv<-5
a<-n-(mv-1)
cont<-0
for (num in (a-1):0){
  for (i in 0:num){
    cont<-cont+1
    p0<-v[a-num]
    pf<-v[n-i]
  }
}

预期的结果应该是:

> print(cont)
[1] 1 2 3 4 5 6 7 8 9 10
> print (p0)
[1] "a" "a" "a" "a" "b" "b" "b" "c" "c" "d"
> print (pf)
[1] "h" "g" "f" "e" "h" "g" "f" "h" "g" "h"

我会将cont保留为索引变量,并将其他变量存储在向量中。

v<-c("a","b","c","d","e","f","g","h")
n<-length(v)
mv<-5
a<-n-(mv-1)
cont = 0
cont_stored = vector();
p0 = vector();
pf = vector();

for (num in (a-1):0){
  for (i in 0:num){
    cont <- cont+1
    cat("cont = ", cont, "\n"); ## useful function for printing stuff out in loops
    cont_stored[cont] = cont;
    p0[cont] = v[a-num]
    pf[cont] = v[n-i]
  }
}
cont_stored
p0
pf

您可以在没有显式for循环的情况下执行此操作:

v <- c("a","b","c","d","e","f","g","h")
n <- length(v)
mv <- 5
a <- n-(mv-1)
cont <- 0

p0 <- rep(v[1:a], a:1)
pf <- v[unlist(sapply((n-a + 1):n, function(x) n:x))]

p0
# [1] "a" "a" "a" "a" "b" "b" "b" "c" "c" "d"
pf
# [1] "h" "g" "f" "e" "h" "g" "f" "h" "g" "h"

如果你需要cont你可以使用p0pfseq_along

cont <- seq_along(p0)
cont
#[1]  1  2  3  4  5  6  7  8  9 10

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM