【问题标题】:How to Apply String Vector to Logical Vector如何将字符串向量应用于逻辑向量
【发布时间】:2018-08-17 13:20:40
【问题描述】:

我想用相同长度的字符串向量的相应元素替换逻辑向量中TRUE 的任何实例。

比如我想合并:

my_logical <- c(TRUE, FALSE, TRUE)
my_string <- c("A", "B", "C")

生产:

c("A", "", "C")

我知道:

my_string[my_logical]

给予:

"A" "C"

但似乎无法弄清楚如何返回相同长度的向量。我的第一个想法是简单地将向量相乘,但这会引发错误“二元运算符的非数字参数”。

【问题讨论】:

    标签: r


    【解决方案1】:

    replace 的另一个选项

    replace(my_string, !my_logical, "")
    #[1] "A" ""  "C"
    

    【讨论】:

      【解决方案2】:

      怎么样:

      my_logical <- c(TRUE, FALSE, TRUE)
      my_string <- c("A", "B", "C")
      my_replace <- ifelse(my_logical==TRUE,my_string,'')
      my_replace
      [1] "A" ""  "C"
      

      编辑,谢谢@www:

      ifelse(my_logical, my_string, "")
      

      【讨论】:

        【解决方案3】:

        也许:

        my_string[ !my_logical ] <- ""
        
        my_string
        # [1] "A" ""  "C"
        

        当然这会覆盖现有对象。

        【讨论】:

          【解决方案4】:

          当my_logical 等于FALSE 时,使用ifelse 添加NA(否则为TRUE)。使用它来进行子集化。

          new <- my_string[ifelse(!my_logical, NA, T)]
          new
          
          [1] "A" NA  "C"
          

          如果你想要"" 而不是NA,请执行以下操作。

          new[is.na(new)] <- ""
          
          [1] "A" ""  "C"
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-03-31
            • 2021-10-01
            • 1970-01-01
            • 2019-10-26
            相关资源
            最近更新 更多