2

我有一个表集,我在其上循环执行一些操作:

for (i in 1:24){
    assign(paste0("set.", i), ts(subset(set, set$hour==i)))
    assign(paste0("lag_set.", i),
        cbind(get(paste0("set.", i))[, 1:3],
        lag(get(paste0("set.", i))[, 4:ncol(set)], 3))[-1:-3, ])

    assign(paste0("train.set.", i),
        get(paste0("lag_set.", i))[1:train_obs, ])
    assign(paste0("validation.set.", i),
        get(paste0("lag_set.", i))[(train_obs+1):(nrow(set.1)-test_obs+1), ])
    assign(paste0("test.set.", i),
        get(paste0("lag_set.", i))[(nrow(set.1)-test_obs+1):(nrow(set.1)), ])
}

最后,我得到了统一的列名。

我尝试将以下行添加到循环中,它只是从第一个表中获取列名(它们不会改变):

colnames(get(paste0("lag_set.", i)))<-colnames(set)

结果,我收到以下错误:

colnames(get(paste0("lag_set.", i))) <- colnames(set) 中的错误:赋值目标扩展为非语言对象

但是,当我插入表的名称(例如lag_set.1)时:

colnames(lag_set.1)<-colnames(set)

代码运行良好。

我在哪里犯了错误以及如何处理?

4

0 回答 0