簡體   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