tapply中的错误:参数必须具有相同的长度

时间:2015-06-04 13:02:28

标签: r csv arguments tapply

我已将一组数据导入R作为.csv文件中的数据框。最初,我收到如下错误消息:

> data<-read.csv("D:/research/PhD 2014/Data/anaesthesia trials/anaesthesia    times.csv", header=TRUE)
> str(data)
'data.frame':   80 obs. of  10 variables:
$ chemical: Factor w/ 2 levels "aquis","benzocaine": 1 1 1 1 1 1 1 1 1 1 ...
$ Fish    : int  1 2 3 4 5 6 7 8 9 10 ...
$ Dose    : int  10 10 10 10 10 10 10 10 10 10 ...
$ X1      : int  442 0 0 0 0 0 0 0 0 0 ...
$ X2      : int  600 0 0 0 0 0 0 0 0 0 ...
$ X3a     : int  885 0 0 0 0 0 0 0 0 0 ...
$ X3b     : int  0 0 0 0 0 0 0 0 0 0 ...
$ Recovery: int  650 0 0 0 0 0 0 0 0 0 ...
$ wt..g.  : num  0.19 0 0 0 0 0 0 0 0 0 ...
$ tl..mm. : int  35 0 0 0 0 0 0 0 0 0 ...
> Mean<-tapply(data$x1,data$Dose, mean)
 Error in tapply(data$x1, data$Dose, mean) : 
    arguments must have same length
> length(data$Dose)
 [1] 80
> length(data$x1)
 [1] 0
> dim(data$x1)
 NULL

我怀疑这是因为缺少值。但是,缺失值不是缺失值,它们是真实的0。我已经搜索了错误和函数&#39; tapply&#39;在这里,在其他论坛上,实际上复制了来自&#34; R&#34;的初学者指南并用我自己的数据替换它。

我的另一个问题是,与缺少零相比更有问题的是&#39; x1&#39;长度为&#39; 0&#39;根据length()函数...

我很困惑,因为我已经回去检查.csv文件,尝试将其保存为另一个.csv文件,似乎没有任何改变。我已确保将单元格格式更改为&#34; number&#34;在.csv本身,这似乎没有帮助。 R是否由于某种原因无法识别数据?

我可以提供问题.csv文件,只是不确定最好的方法是什么。

3 个答案:

答案 0 :(得分:2)

您应该在data$X1来电中使用tapply(大写X)。 R中的名称区分大小写。如果有效,请告诉我们。

答案 1 :(得分:0)

尝试将输入数据转换为数据框(data.frame())。这为我解决了类似的错误。

&#xA;

答案 2 :(得分:0)

该函数轻按需要一个因子变量以将结果分组。在您的示例中,INDEX变量data $ Dose是整数。

尝试:

data[, Dose] <- as.factor(data[, Dose])
Mean <- tapply(data$X1, data$Dose, mean)