【问题标题】:Missing values - Subset function缺失值 - 子集函数
【发布时间】:2017-08-14 22:01:12
【问题描述】:

此代码没有按照我的设计目的进行。您有什么想法吗?

vet.in <- 1:30
vet.cut <- cut(vet.in, breaks = c(0,10,20, 30), labels = c("peq", "med", "gra") )

vet.cut <- subset(vet.cut, vet.cut == c("peq", "med"))

使用subset后,带有“gra”的元素被desapear填充,带有“peq”和“med”的元素数量减少到一半,这不是本意。子集函数的目的是摆脱“gra”,而盛行“peq”和“med”

【问题讨论】:

  • vet.cut &lt;- subset( vet.cut, vet.cut == "peq" | vet.cut=="med")
  • 它不起作用,因为使用c("peq", med"),您正在寻找peq,下一个应该是med,并在向量中的所有值中迭代它。即:vet.cut == c("peq", "med") TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE
  • 或者干脆vet.cut &lt;- subset( vet.cut, vet.cut!="gra")

标签: r subset


【解决方案1】:

问题在于您没有实现您的意图 - 代码做了其他事情。 如果您的意图是过滤掉“gra”,请使用:

evet.in <- 1:30
vet.cut <- cut(evet.in, breaks = c(0,10,20, 30), labels = c("peq", "med", "gra") )

vet.cut <- subset(vet.cut, vet.cut %in% c("peq", "med"))

成功的关键是使用 %in% 运算符而不是 == 运算符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-21
    • 2019-09-17
    • 2020-11-21
    • 2014-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    相关资源
    最近更新 更多