有没有一种简单的方法可以使用循环简化此代码?

时间:2020-05-28 01:24:58

标签: r loops dataframe for-loop

有没有一种使用循环来简化此代码的方法?

set.seed(100) 

AL_INDEX <- sample(1:nrow(AL_DF), 0.7*nrow(AL_DF))
AL_TRAIN <- AL_DF[AL_INDEX,]
AL_TEST <- AL_DF[-AL_INDEX,]  

AR_INDEX <- sample(1:nrow(AR_DF), 0.7*nrow(AR_DF))
AR_TRAIN <- AR_DF[AR_INDEX,]
AR_TEST <- AR_DF[-AR_INDEX,]  

AZ_INDEX <- sample(1:nrow(AZ_DF), 0.7*nrow(AZ_DF))
AZ_TRAIN <- AZ_DF[AZ_INDEX,]
AZ_TEST <- AZ_DF[-AZ_INDEX,]  

AL_DF,AR_DF和AZ_DF是具有相同字段结构但记录数量不同的数据帧。

1 个答案:

答案 0 :(得分:2)

找到一个模式以捕获所有数据框名称。在示例共享的所有文件中,所有文件均以"_DF"结尾,请使用mget将其添加到列表中。在测试和训练中划分数据,并将它们unlist进行一级转换。

data <- unlist(lapply(mget(ls(pattern = '_DF$')), function(df) {
            index <- sample(1:nrow(df), 0.7*nrow(df))
            list(train = df[index,], test = df[-index,])  
         }), recursive = FALSE)

现在使用list2env将它们放入单个数据帧。

list2env(data, .GlobalEnv)