我只是尝试运行一个for循环来识别哪些行号注册为TRUE并将其打印在控制台中。
Holidays <- c("TRUE", "TRUE", "FALSE", "TRUE")
newvector <- for (i in 1:length(Holidays))
{
if (i == TRUE)
print(i)
}
答案 0 :(得分:4)
如果要存储哪些行为TRUE,请预先分配一个空矢量并将其绑定在循环中。
如果您确实将TRUE
和FALSE
作为字符串,请执行以下操作
Holidays <- c("TRUE", "TRUE", "FALSE", "TRUE")
store = c()
for (i in 1:length(Holidays)){
if (Holidays[i] == "TRUE") # here you want to see whether the element inside Holiday is equals "TRUE"
store = c(store, i) # store vector you give you which rows are "TRUE"
}
但是,如果Holidays
中有实际的逻辑条目,那么正确的语法应为
Holidays <- c(TRUE, TRUE, FALSE, TRUE)
store = c()
for (i in 1:length(Holidays)){
if (Holidays[i] == TRUE)
store = c(store, i)
}
然而,正如@Badger所提到的,没有必要在这里循环。您可以使用which
store = which(Holidays %in% TRUE)
答案 1 :(得分:2)
因此,使用this question作为指导,下面的命令将从Holidays矢量中得到一个匹配“TRUE”的索引号矢量:
Replace-FileString
答案 2 :(得分:1)
编辑请忽略我的回答,这是不正确的,因为它已被指出给我。
=============================================== ============================
您的问题是您将TRUE
和FALSE
存储为字符串,而不是布尔值。
而不是
Holidays <- c("TRUE", "TRUE", "FALSE", "TRUE")
你应该:
Holidays <- c(TRUE, TRUE, FALSE, TRUE)
其余代码应该有效。
答案 3 :(得分:1)
为什么要用for循环来做? 如果你改变了想法,你可以用它来做。也适用于非布尔值
newvector <-which(Holidays == "TRUE")