尝试编写一个在行中找到“TRUE”的For循环

时间:2018-03-07 18:13:22

标签: r for-loop

我只是尝试运行一个for循环来识别哪些行号注册为TRUE并将其打印在控制台中。

 Holidays <- c("TRUE", "TRUE", "FALSE", "TRUE")


 newvector <- for (i in 1:length(Holidays))
         {
             if (i == TRUE)
               print(i)
    } 

4 个答案:

答案 0 :(得分:4)

如果要存储哪些行为TRUE,请预先分配一个空矢量并将其绑定在循环中。

如果您确实将TRUEFALSE作为字符串,请执行以下操作

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)

编辑请忽略我的回答,这是不正确的,因为它已被指出给我。

=============================================== ============================

您的问题是您将TRUEFALSE存储为字符串,而不是布尔值。

而不是

Holidays <- c("TRUE", "TRUE", "FALSE", "TRUE")

你应该:

Holidays <- c(TRUE, TRUE, FALSE, TRUE)

其余代码应该有效。

答案 3 :(得分:1)

为什么要用for循环来做? 如果你改变了想法,你可以用它来做。也适用于非布尔值

newvector <-which(Holidays == "TRUE")