提问人:edge selcuk 提问时间:10/31/2022 更新时间:10/31/2022 访问量:57
遍历 for 循环 R 中的两个向量
Iterating through two vectors in a for loop R
问:
我想创建一个 for 循环,它在其中计算 和 的标准偏差。它将显示它将计算的向量的名称,然后打印它的值。我如何才能使下面的代码工作?vectA
vectB
std()
std
vectA <- c(1,6,7)
vectB <- c(8,9,11)
names <- c('A', 'B')
vects <- c(vectA,vectB)
for (i in seq_along(scale_vars)) {
print("Calculating for", names[i])
std(vects[i])
}
答:
1赞
Martin Wettstein
10/31/2022
#1
如果使用 连接向量,它们会形成一个长向量。在您的情况下,vects 的长度为 6,并且只是 .您必须使用列表来创建向量集合,您可以在其中按索引调用它们。此外,标准差的函数是,您不能使用相同的 print 语句打印两个字符。你首先需要他们。并且是保留的。c()
c(1,6,7,8,9,10)
sd()
paste()
names
试试这个:
vectA <- c(1,6,7)
vectB <- c(8,9,11)
vnames <- c('A', 'B')
vects <- list(vectA,vectB)
for (i in 1:2) {
print(paste("Calculating for", vnames[i]))
print(sd(vects[[i]]))
}
您还可以通过命名列表中的向量来简化它:
vectA <- c(1,6,7)
vectB <- c(8,9,11)
vects <- list("A"=vectA,"B"=vectB)
for (i in names(vects)) {
print(paste("Calculating for", i))
print(sd(vects[[i]]))
}
评论
std()
scale_vars
vects <- c(vectA,vectB)
names
vectA