【问题标题】:Error in unique.default(x, nmax = nmax) : unique() applies only to vectors in Runique.default(x, nmax = nmax) 中的错误:unique() 仅适用于 R 中的向量
【发布时间】:2018-03-12 18:46:52
【问题描述】:

我试图通过以下代码解决 R 中的缺失值

  {ds$bmi=ifelse(is.na(ds$bmi), ave(ds$bmi, Fun=function(x) mean(y,na.rm=TRUE)),ds$bmi)}   

出现以下错误

unique.default(x, nmax = nmax) 中的错误: unique() 仅适用于向量

请帮忙解决这个错误

【问题讨论】:

  • 首先,你有function(x),然后使用y作为你的变量!
  • 不确定您要达到什么目的。您应该提供最少的可重现示例数据。例如ds$bmi的详细情况不知道。看看stackoverflow.com/questions/5963269/…。它将帮助您以更好的方式提出问题。
  • 谢谢。此错误仅由 y 引起
  • 不是Fun=function(x),是FUN,R区分大小写。

标签: r analytics data-science


【解决方案1】:

这里的 'ave' 没有任何“分组变量,通常是因子,长度都与 x 相同。”如 ?ave(... args)中所述。

如果目标是用 bmi 的平均值替换 NA,也许你想要的是直接的平均值?

hm_rows=10;
ds=data.frame(bmi=runif(hm_rows,0,10))
ds[c(1,2,4,6),"bmi"] <- NA
{ds$bmi=ifelse(is.na(ds$bmi), mean(ds$bmi,na.rm=TRUE),ds$bmi)}

【讨论】:

  • 感谢它也有效。错误是因为我在平均值(y)中使用的 y 而在函数中我正在传递 x
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-16
  • 1970-01-01
  • 1970-01-01
  • 2017-03-12
相关资源
最近更新 更多