我在R中推进并且在第一次成功地使用lapply来加载一个名为ImportData()的函数中的文件.工作职能是:
AllData <- lapply(files, function(i){
read.csv(i, stringsAsFactors = FALSE)
})
Run Code Online (Sandbox Code Playgroud)
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]
}
Run Code Online (Sandbox Code Playgroud)
最后一个循环就是这个.names(AllData)是长度为4的字符向量.
for (i in 1:length(names(AllData)))
{
cat("Time Frame: ", names(AllData)[i], "\n")
trade(AllData[[i]])
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下扔我的是[[i]].我似乎无法通过lapply工作.
谢谢您的帮助.
使用forxxpply函数之一替换是好的,但更好的是使用向量化函数.
这里例如,不需要使用for因为操作被矢量化.所以应该写第一个循环:
AllData$Date <-
strptime(paste(AllData$Date, AllData$Time), "%m/%d/%y %H:%M:%S")
Run Code Online (Sandbox Code Playgroud)
第二个循环也是一样:
cat(paste("Time Frame: ", names(AllData), "\n"))
Run Code Online (Sandbox Code Playgroud)
编辑如果你有一个data.frames列表,你可以在这里使用循环:
for (x in seq_along(AllData)){
x$Date = strptime(paste(x$Date, x$Time), "%m/%d/%y %H:%M:%S")
}
Run Code Online (Sandbox Code Playgroud)