【问题标题】:Warning message: In 1:5:length(N) : numerical expression has 5 elements: only the first used警告消息:在 1:5:length(N) 中:数值表达式有 5 个元素:仅使用第一个元素
【发布时间】:2018-05-04 18:10:03
【问题描述】:

正如我的作业所述,我正在尝试将数据分成 55 个时间序列。我的教授向我展示了如何通过创建一个循环来将它们分开。在这种情况下,D 有 11 级,N 有 5 级。不知何故,我只能得到一个时间序列。我不知道我应该怎么做才能将其余的人分开。有人有想法吗?

D=unique(T$daypart)
D
N=unique(T$network)
N

for (i in 1:length(D)) {
 for(j in 1: length(N)) {
   my_ts <- filter(T,network==N[j],daypart==D[i])

【问题讨论】:

  • 我已尽我所能对您的代码进行了格式化,但有一些非常明显的拼写错误(缺少 })。
  • 看起来您正在将 i 和 j 的每个组合写入同一个变量。每次覆盖之前的值。使用一种数据结构,为每个不同的结果提供自己的位置。 (也许是一个列表?但这取决于你接下来想做什么)

标签: r


【解决方案1】:

就像@steveLangsford 所说,您正在不断地覆盖您的数据。将每个运行存储到一个空列表中,以便在运行结束后访问它们:

##create an empty list
my_ts <- list()

##start an iteration #
iter <- 1

##feed the data in
for (i in 1:length(D)) {
 for(j in 1: length(N)) {
   my_ts[[iter]] <- filter(T,network==N[j],daypart==D[i])
   iter <- iter + 1
}
}

【讨论】:

    猜你喜欢
    • 2018-08-21
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    • 2021-08-17
    • 2021-04-25
    • 2018-02-07
    • 2020-05-23
    • 2023-03-12
    相关资源
    最近更新 更多