条件的长度 > 1 并且只使用第一个元素错误

Posted

技术标签:

【中文标题】条件的长度 > 1 并且只使用第一个元素错误【英文标题】:the condition has length > 1 and only the first element will be used error 【发布时间】:2021-06-11 00:22:33 【问题描述】:
if (crabs$FL >= median(crabs$FL)) crabs$FLG <- "L" else crabs$FLG <- "S"

crabs 是数据名,FL 是变量名。如果 FL 大于中位数,我正在尝试创建一个变量名称“FLG”。

但它表示条件的长度 > 1,并且只会使用第一个元素。它创建了 FLG,但似乎只有第一行的值用于创建它。

if (crabs$FL[i] >= median(crabs$FL)) crabs$FLG <- "L" else crabs$FLG <- "S"

我试过这个。但现在它说 if (crabs$FL[i] >= median(crabs$FL)) 中的错误: 需要 TRUE/FALSE 的缺失值。

请给我任何解决此错误的想法!

【问题讨论】:

您发布的第一条消息是警告,而不是错误——代码仍在运行。除此之外,很难说没有reproducible example。 i 是什么? 你试过了吗? ***.com/questions/14170778/… 【参考方案1】:

如果你不介意 tidyverse 的方式,这段代码应该可以让你得到你想要的。

library(tidyverse)
crabs <- data.frame(FL = c(1,2,3,4,5,50000))

crabs_2 <- crabs %>%
  mutate(
   FLG = case_when(
     FL >= median(FL) ~ 'L',
     TRUE ~ 'S'
   ) 
  )

【讨论】:

【参考方案2】:

也许:

mutate(crabs, FLG = if_else(FL >= median(crabs$FL), 'L', 'S'))

【讨论】:

以上是关于条件的长度 > 1 并且只使用第一个元素错误的主要内容,如果未能解决你的问题,请参考以下文章

“条件的长度 > 1,仅使用第一个元素”错误

错误:“条件长度 > 1,仅使用第一个元素”

leetcode第26题:删除排序数组的重复项

LeetCode 第26题 删除排序数组中的重复项

100. 删除排序数组中的重复数字

双指针总结