使用应用函数代替R中的For循环

 xiaobei爱吃肉 发布于 2023-02-08 11:56

我在R中推进并且在第一次成功地使用lapply来加载一个名为ImportData()的函数中的文件.工作职能是:

AllData <- lapply(files, function(i){
    read.csv(i, stringsAsFactors = FALSE)
  })

AllData是包含4个数据帧的列表.在未来,它将包含更多.

函数中有两个for循环,我想用lapply替换.第一个是将日期和时间列组合成一个时间戳的循环.我正在抛弃我创建应用功能.

  for (i in 1:length(AllData))
   {
    AllData[[i]]$Date <- strptime(paste(AllData[[i]]$Date, AllData[[i]]$Time), "%m/%d/%y %H:%M:%S")
    AllData[[i]] <- AllData[[i]][-2]
    }

最后一个循环就是这个.names(AllData)是长度为4的字符向量.

  for (i in 1:length(names(AllData)))
  {
    cat("Time Frame: ", names(AllData)[i], "\n")
    trade(AllData[[i]])
  }

在这种情况下扔我的是[[i]].我似乎无法通过lapply工作.

谢谢您的帮助.

1 个回答
  • 使用forxxpply函数之一替换是好的,但更好的是使用向量化函数.

    这里例如,不需要使用for因为操作被矢量化.所以应该写第一个循环:

    AllData$Date <- 
             strptime(paste(AllData$Date, AllData$Time), "%m/%d/%y %H:%M:%S")
    

    第二个循环也是一样:

    cat(paste("Time Frame: ", names(AllData), "\n"))
    

    编辑如果你有一个data.frames列表,你可以在这里使用循环:

      for (x in seq_along(AllData)){
           x$Date = strptime(paste(x$Date, x$Time), "%m/%d/%y %H:%M:%S")
       }
    

    2023-02-08 11:59 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有