我在控制台中输入的内容(定义了alp,DF1,DF2):
LT <- left.tail=FALSE
q <- qf(alp, DF1, DF2, LT)
q
我得到了什么:
LT <- left.tail=FALSE
Error in LT <- left.tail = FALSE : could not find function "<-<-"
> q <- qf(alp, DF1, DF2, LT)
> q
[1] 0.4490486
我正在寻找的答案是 2.22,当下尾被定义为 false 时,我得到了这个答案。
为什么它告诉我"<-<-"不可用,我没有写这个函数? 有没有办法为 lower.tail 存储一个真/假值?
为了进一步解释,我正在尝试编写一个代码,我只需要输入顶部的值并从中获取答案:
data.entry(1)
a1 <- mean(var2)
v1 <- var(var2)
SD1 <- sd(var2)
n1 <- max(n)
a2 <- mean(var3)
v2 <- var(var3)
SD2 <- sd(var3)
n2 <- max(n)
int <- 1-0.9 #given interval
LT <- FALSE #Right Tailed- H1: >/ =/=
TT <- 0 #Two Tailes- H1: = / =/=
alp.O <- 0.1 #Given Alpha
alp <- alp.O/(1+TT)
DF1 <- n1 - 1
DF2 <- n2 -1
q <- qf(alp, DF1, DF2, left.tail=LT) #ALP, DF1, DF2
f <- q-2*q*RT #t-Critical Value - Rejection Level
F <- v1/v2 #Parameter of Interest1 / Parameter of Interest2
print(F==f)
print(F>f)
print(F<f)
它还没有完成,旧代码中有一些残留物,请忽略它们。
在我看来,这看起来像是R中的解析器怪异。 表达式
LT <- left.tail=FALSE
解析为
(LT <- left.tail) = FALSE
这与
`<-`(LT, left.tail) = FALSE
这与
`<-<-`(LT, left.tail, FALSE)
这就是您的错误消息的来源。
我称之为奇怪,因为我本来希望它的解析方式与
LT <- left.tail <- FALSE
将FALSE
分配给left.tail
,然后分配给LT
。
正确的方法是
qf(p = alp, df1 = DF1, df2 = DF2, lower.tail = FALSE)
请注意,qf(alp, DF1, DF2, FALSE)
FALSE
传递给qf()
的第四个参数,该参数是ncp
而不是lower.tail
。
在 R 中,您可以使用 2 个不同的运算符进行分配:<-
和=
。
也就是说,如果要将值 3 分配给变量x
,则可以编写x<-3
或x=3
。
当你写:LT <- left.tail=FALSE
时,不是测试left.tail
是否为FALSE(你会用比较运算符==
来做),而是在设置一个双重赋值——即将值FALSE
分配给left.tail
和LT
。如果您使用相同的运算符,您实际上可以这样做:x=y=4
或k<-d<-5
都按预期工作。但是,如果混合使用这些运算符,则会出现错误。
我不确定生成函数<-<-
幕后发生了什么,但我知道这是 R 试图处理在单个表达式中组合 2 个不同的赋值运算符的结果。如果您确实要执行双重分配,只需使用相同的运算符:
LT <- left.tail <- FALSE
在你的情况下,我认为你不想做双重任务。您可能希望测试left.tail
是否为 FALSE,并将结果存储在LT
中。您可以通过以下几种方式执行此操作:
# Tests for only FALSE values
LT <- left.tail==FALSE
LT <- isFALSE(left.tail)
# Tests for "falsy" values like 0
LT <- !left.tail