在 R 中循环使用负数的 seq

Looping through seq with negative numbers in R

提问人:Teevell 提问时间:9/7/2022 更新时间:9/7/2022 访问量:144

问:

这可能非常简单,但我很难让 R 循环使用负数。我试过使用 seq(-10,10,1),我试过使用 seq(from=-10, to=10, by=1) 我得到的是 1-10 或 1-21 的 b 值。我需要它从 -10 到 10。我在这里错过了什么?任何帮助都非常感谢。

这是我目前对代码的尝试:

pr1 <- NULL
i <- 1
t = seq(from = -10, to = 10, by = 1)

for (b in seq(t)) {
  LLF <- sum(1*log((1/(1+exp(-(b)))))+(1-1)*log(1-(1/(1+exp(-(b))))))
  like[b] <- LLF
  pr[b] <- b 
}
pr
df <-data.frame(like, pr)```
R 循环 序列

评论

0赞 Teevell 9/7/2022
它确实产生了预期的结果,所以不是这样。

答:

-1赞 Brian Montgomery 9/7/2022 #1

你只需要,因为 t 已经代表了你想要的序列。for (b in t) {

评论

0赞 Teevell 9/7/2022
它仍然只接受这种变化的积极值。
1赞 thelatemail 9/7/2022
t = seq(from = -10, to = 10, by = 1); for (b in t) { print(b) }肯定会打印出负数。
0赞 IRTFM 9/7/2022
@BrianMontgomery 在提交之前,您应该运行建议的编辑。初始化的失败也是显而易见的。用作序列的问题是 b 也被用作索引,而使用负数索引的结果是你没有得到任何结果。t
1赞 IRTFM 9/7/2022 #2

几个错误。无法将值与其整数顺序区分开来,并且无法初始化 for 循环中使用的变量:

pr1 <- NULL
i <- 1
(t = seq(from = -10, to = 10, by = 1) )
like <- numeric(); pr <- numeric() # need to exist to do subscripted assignment
for (b in seq_along(t) ) {
    # Note the use of b used to index the `t` vector
    LLF <- sum(1*log((1/(1+exp(-( t[b] )))))+(1-1)*log(1-(1/(1+exp(-( t[b] ))))))
    like[b] <- LLF
    pr[b] <- b 
}
pr
df <-data.frame(like, pr)

用作变量名称可能不是一个好主意。它是一个转置矩阵的 R 函数名称。F 分布的密度函数也是如此。这些不是错误,而是警告,以防止奇怪的错误消息和混淆人类。R 可以使对象名称与函数名称区分开来。tdf