条件的长度 > 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 并且只使用第一个元素错误的主要内容,如果未能解决你的问题,请参考以下文章