我需要一些我一直在使用的for循环的帮助。我不知道我所做的事情是否可能,但我希望你能帮助我使它发挥作用。
最初,我有一个包含100个元素的列表,这些元素都是FALSE。 我想通过100个变量来改变元素(FALSE / TRUE)。 第1步应该将每个元素更改为TRUE, 第2步每隔一个元素更改一次(从2开始);如果为FALSE为TRUE,如果为TRUE为FALSE, 第3步更改每个第三个元素,依此类推。
这是我到目前为止所做的:
X = rep(FALSE,100)
for (i in X) {
if (i == X[1]) {
X[X%%1==0] == TRUE
} else {
i = i+1
k = X[X%%i==0]
for (i in k) {
if (k == TRUE) {
replace(X, k, FALSE)
} else {
replace(X, k, TRUE)
}
}
}
}
最后,我希望结果总结所有TRUE元素,但我不知道如何将它放在循环中。
非常感谢所有帮助!
答案 0 :(得分:1)
X = rep(FALSE,100)
for (i in 1:length(X)) {
# Reverse the value of every element,
# then every 2nd starting with 2,
# then every 3rd element starting with 3,
# etc, through every 100th element starting with 100
for(j in 1:100){
if(i %in% seq(j,length(X),j)){
X[i] <- ifelse(X[i]==FALSE,TRUE,FALSE)
}
}
}
答案 1 :(得分:0)
你也可以试试这个:
for (i in 1:100) X[seq(i, 100, i)]=!X[seq(i, 100, i)]
which(X)
# [1] 1 4 9 16 25 36 49 64 81 100
答案 2 :(得分:0)
不需要外环:
X<- rep(FALSE,100)
for(n in 1:length(X))
{ ix<- n*(1:(length(X)/n))
X[ix]<- !X[ix]
}
which(X)
[1] 1 4 9 16 25 36 49 64 81 100