gpt4 book ai didi

r - 从 R 中的循环创建向量

转载 作者:行者123 更新时间:2023-12-02 22:37:31 25 4
gpt4 key购买 nike

我基本上是在尝试创建一个 NA 和数字的向量,但顺序非常特殊。这是我到目前为止的代码:

x<-rep(rep(2:1,c(2,3)),40)
dummy=1
for (i in 0:length(x))
{ ifelse(x[i+1]==2, print(NA), print(dummy))
if(i %% 5 == 0) dummy=i+1
}

所以我的向量应该如下所示(NA, NA, 1, 1, 1, NA, NA, 6, 6, 6, etc)。但是我不能以这种格式保存它,所以我可以稍后在矩阵中调用它。有什么建议么?我曾尝试创建一个什么都没有的向量,然后将其填充到循环中,但这也无济于事。

丽兹统计学生

最佳答案

在我顽固地坚持之后,我学会了将这些东西完全矢量化,不确定这是否对您的特定情况有帮助,但我会写:

x<-rep(rep(2:1,c(2,3)),40)

通过以下方式获得您的领导权:

leadx=c(x[-1],NA)

写下如果没有 NAs 你会得到的数字

filler=rep(5*0:7+1,each=5)

得到一个用NA填充的大小合适的向量

y=rep(NA,length(x))

将填充符的值插入到你的 NA 向量中

y[which(leadx!=2)]=filler[which(leadx!=2)]

检查它:

head(y)

> [1] NA 1 1 1 NA NA 6 6 6 NA

向量化的东西往往比 for 循环和 if 语句更快。祝你好运!

编辑:您可以在一行中完成所有操作:

y=ifelse(c(x[-1],NA)==2,NA,1)*rep(5*0:7+1,each=5)

关于r - 从 R 中的循环创建向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11235950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com