R:如何对字符向量使用 ifelse 语句
R: How to use ifelse statement for a vector of characters
我正在尝试使用 R 解决测验,但我的代码无法正常运行。我试过调试,但似乎 ifelse 语句无法在某些看起来很随机的数字上工作。
这里是测验:http://puzzles.nigelcoldwell.co.uk/six.htm
switches <- rep("off", 100)
for(i in 1:100){
k <- c(seq(i, 100, i))
ifelse(switches[k] == "off", switches[k] <- "on", switches[k] <- "off")
}
当我 运行 这段代码时,我得到 "on" 14、22、26、30、34 等我应该得到 "off." 是否有错误我将 ifelse 语句应用于具有矢量化索引的矢量的方式?
ifelse
语法应该是
switches <- rep("off", 100)
for(i in 1:100){
k <- seq(i, 100, i)
switches[k] <- ifelse(switches[k] == "off", "on", "off")
}
你有一个二进制问题。没有理由使用 ifelse
。使用逻辑值:
bulbs <- rep(FALSE, 100)
for (i in 1:100) bulbs[!((1:100) %% i)] <- !bulbs[!((1:100) %% i)]
which(bulbs)
#[1] 1 4 9 16 25 36 49 64 81 100
我正在尝试使用 R 解决测验,但我的代码无法正常运行。我试过调试,但似乎 ifelse 语句无法在某些看起来很随机的数字上工作。
这里是测验:http://puzzles.nigelcoldwell.co.uk/six.htm
switches <- rep("off", 100)
for(i in 1:100){
k <- c(seq(i, 100, i))
ifelse(switches[k] == "off", switches[k] <- "on", switches[k] <- "off")
}
当我 运行 这段代码时,我得到 "on" 14、22、26、30、34 等我应该得到 "off." 是否有错误我将 ifelse 语句应用于具有矢量化索引的矢量的方式?
ifelse
语法应该是
switches <- rep("off", 100)
for(i in 1:100){
k <- seq(i, 100, i)
switches[k] <- ifelse(switches[k] == "off", "on", "off")
}
你有一个二进制问题。没有理由使用 ifelse
。使用逻辑值:
bulbs <- rep(FALSE, 100)
for (i in 1:100) bulbs[!((1:100) %% i)] <- !bulbs[!((1:100) %% i)]
which(bulbs)
#[1] 1 4 9 16 25 36 49 64 81 100