【发布时间】:2018-04-18 00:19:16
【问题描述】:
我正在尝试在 R 中运行方差分析模型。我有一个包含 3 行和 12 列的数据文件。每行是解释变量特定水平的数据。单元格 [i,j] 是级别 i 的第 j 个响应。该文件是“.dat”扩展名。我正在运行以下 R 代码以尝试获取 36 x 2 数据帧来运行 anova 模型,而不是 3 x 12 原始数据帧:
data <- read.table("usedcar.dat", row.names = 1)
young <- data[1,]
med <- data[2,]
old <- data[3,]
Price <- c(young, med, old)
Age <- as.factor(c(rep(1,12), rep(2,12), rep(3,12)))
data <- cbind(Age, Price)
data <- as.data.frame(data)
但是当我尝试从中取出 anova 模型时,我得到了无效的列表类型错误:
m1 <- aov(Price ~ Age, data = data)
Error in model.frame.default(formula = Price ~ Age, data = data, drop.unused.levels = TRUE) : invalid type (list) for variable 'Price'
我在这里做错了什么?
如果有帮助,这里有一个随机矩阵:
replicate(12, rnorm(3))
这里是 str(data) 结果:
str(data)
'data.frame': 36 obs. of 2 variables:
$ Age :List of 36
..$ 1 : int 1
..$ 2 : int 1
..$ 3 : int 1
...
..$ 36: int 3
$ Price:List of 36
..$ 1 : int 2300
...
..$ 36: int 2075
【问题讨论】:
-
能否请您提供确切的错误信息?
-
这也有助于使您的示例可重现,即包含一个生成错误的小数据集
-
如果您要为模型提供
data参数,则不应在公式中子集 ($):aov(Price ~ Age, data = data) -
同样的错误与 aov(Price~Age,data=data) :(
-
鉴于错误,我会查看
str(data);您的砍伐似乎已将Price作为列表列。