我在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中工作 .
谢谢您的帮助 .
2 回答
对于第一个循环,将
lapply
与transform
结合使用与匿名函数一起使用非常有用 . 在这种情况下,匿名函数中的x
引用列表中的元素(例如,AllData [[1]]),然后您可以在transform
中使用该元素 . 我发现transform
在这里很有用,因为我可以按名称要求列表元素的变量 .我不知道
trade
函数来自哪里,所以我不确定你想要用第二个循环做什么 . 如果你澄清我可能会给你一个想法 .最好使用xxpply函数之一替换
for
,但更好的方法是使用矢量化函数 .例如,由于操作是矢量化的,因此不需要使用
for
. 所以应该写第一个循环:第二个循环也是一样:
EDIT 如果您有data.frames列表,可以在此处使用循环: