#transforming length of time > transLOT > #checking for outliers > fit outlierTest(fit) rstude-6ren">
gpt4 book ai didi

R-错误 "variable lengths differ"

转载 作者:行者123 更新时间:2023-12-04 02:07:54 24 4
gpt4 key购买 nike

> #transforming length of time
> transLOT<-log(LengthofTimemin)
>
> #checking for outliers
> fit<-lm(transLOT~DielEnd+TideEnd+TideStart+Moonphase+TideStart*Moonphase, data=resdata)
> outlierTest(fit)
rstudent unadjusted p-value Bonferonni p
295 4.445284 1.1025e-05 0.0052808
>
> #getting rid of the outlier data in row 295
> rdata<-resdata[-295, ]
> print(rdata[294:296,5:10])
# A tibble: 3 × 6
DepartureDate DepartureTime LengthofTime LengthofTimemin EventLengthCategories
<dttm> <dttm> <dttm> <dbl> <chr>
1 2016-09-19 1899-12-30 23:46:46 1899-12-30 00:05:49 5.816667 5-15
2 2016-09-20 1899-12-30 01:55:28 1899-12-30 00:01:20 1.333333 <5
3 2016-09-20 1899-12-30 04:07:28 1899-12-30 00:01:21 1.350000 <5
> newfit<-lm(transLOT~DielEnd+TideEnd+TideStart+Moonphase+TideStart*Moonphase, na.action=na.exclude, data=rdata)
Error in model.frame.default(formula = transLOT ~ DielEnd + TideEnd + :
variable lengths differ (found for 'DielEnd')
> #now all of a sudden the variable lengths differ

我知道问题发生在删除数据行时,但我认为 na.exclude 会解决这个问题。经过彻底搜索,我无法确定为什么会出现此错误。

最佳答案

发生这种情况是因为在您的第一步中,您在数据框之外创建了一个单独的变量,transLOT<-log(LengthofTimemin) .当您从数据中删除一行时,transLOT不变。比不同长度更糟糕的是,您的数据不再排列 - 如果忽略不同长度,与您删除的行之后的响应相比,您的数据行将“相差一个”。

简单的解决方案是创建您的 transLOT数据框中的变量。然后,无论何时您对数据执行操作(如删除行),都会对 transLOT 执行相同的操作。 .

resdata$transLOT <- log(resdata$LengthofTimemin)

请注意,我还使用了 resdata$LengthofTimemin而不是 LengthofTimemin您似乎在工作区中拥有它。你用过attach()吗在某一点?你不应该使用 attach正是出于这个原因。将变量保存在数据框中!

关于R-错误 "variable lengths differ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41731175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com