【问题标题】:as.numeric/as.integer not working in Ras.numeric/as.integer 在 R 中不起作用
【发布时间】:2016-04-03 19:04:52
【问题描述】:

我是 R 新手,正在尝试做一个简单的方差分析。我创建了一个数据框:

MeanTable <- data.frame(Age=c("2","2","2","4","4","4","6","6","6"), 
   Yield=c("12.812","15.17","13.868","24.456","23.444","25.312",
         "21.146","21.63","21.84"),stringsAsFactors = FALSE)

然后尝试进行方差分析,但我收到以下警告消息:

警告信息: 1:在 mean.default(X[[i]], ...) 中: 参数不是数字或逻辑:返回 NA 2:在 mean.default(X[[i]], ...) 中: 参数不是数字或逻辑:返回 NA 3:在 mean.default(X[[i]], ...) 中: 参数不是数字或逻辑:返回 NA

所以我假设这意味着我打算使用 as.numeric 将值从因子转换为数字。所以我这样做了:

as.numeric(MeanTable$Age)
is.numeric(MeanTable$Age)

但是得到了FALSE。我究竟做错了什么?还是我的问题完全是另外一回事?

【问题讨论】:

  • 你为什么要在所有内容上加上引号?或者这就是你得到数据的方式?要暴力破解它,您可以添加 MeanTable[] &lt;- lapply(MeanTable, type.convert) 但这可以通过不使用引号来避免

标签: r integer warnings numeric


【解决方案1】:

您需要在数据框内将响应值更改为数字

MeanTable <- data.frame(Age=c("2","2","2","4","4","4","6","6","6"), 
   Yield=c("12.812","15.17","13.868","24.456","23.444","25.312",
         "21.146","21.63","21.84"),stringsAsFactors = FALSE)

MeanTable$Yield <- as.numeric(MeanTable$Yield)
lm(Yield~Age,data=MeanTable)

正如@rawr 指出的那样,如果您的变量以数字开头会更容易。但是,请注意:如果您将 Age 设为数字而非分类,您将拟合回归模型而不是单向方差分析。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 2011-11-28
    相关资源
    最近更新 更多