使用包物理活动的R脚本的内存效率

使用包物理活动的R脚本的内存效率,r,out-of-memory,memory-efficient,R,Out Of Memory,Memory Efficient,我有一个相对较短的脚本,它接受一个由数字和字符串字段组成的大数据帧(2373142行x 21列),并根据其中一列的值将其分解为dfs列表。使用此数据集的列表的长度最终为92,然后使用lappy通过体力活动包中的函数运行。该脚本在较小的数据集上工作得很好,但在这么大的数据集上,它会使内存达到最大。我甚至试着将它分解,运行越来越小的列表,但即使只使用原始列表的两个项目子集,它也会达到最大值。我应该补充一点,我的计算机有16GB的ram,R可以访问所有这些ram 由于我没有使用任何循环,我不知道如何提

我有一个相对较短的脚本,它接受一个由数字和字符串字段组成的大数据帧(2373142行x 21列),并根据其中一列的值将其分解为dfs列表。使用此数据集的列表的长度最终为92,然后使用lappy通过体力活动包中的函数运行。该脚本在较小的数据集上工作得很好,但在这么大的数据集上,它会使内存达到最大。我甚至试着将它分解,运行越来越小的列表,但即使只使用原始列表的两个项目子集,它也会达到最大值。我应该补充一点,我的计算机有16GB的ram,R可以访问所有这些ram

由于我没有使用任何循环,我不知道如何提高效率,但我希望有比我更精明的人对效率提出一些建议。我很担心是磨损标记软件包的功能造成了问题,但我不确定。我的数据很敏感,所以很遗憾我无法提供样本。我很抱歉,因为我知道这是远远不够理想的,是限制性的,但任何帮助将不胜感激

allData <- read.csv("myData.csv", header = TRUE) # Loading data

chngActivity <- allData[,c("activity")] #Creating a duplicate of activityIntensity column
chngActivity[chngActivity == -2] <- 0
allData <- cbind(allData, chngActivity)#Binding the new column to the old df

corTime <- transform(allData, dateTime=strptime(allData$dateTime, "%m/%d/%y %H:%M"))# Making sure the dateTime is set as a date
corTimeLst <- split(corTime, corTime$identifier) #Splitting into a list of dfs by identifier
rm(allData, corTime)

allChoi <- function(f) {
  choi_test <- wearingMarking(dataset = f, #Running the choi
                          frame = 90,        #The current parameters are set to
                          perMinuteCts = 1,  # a one minute epoch with the new
                          TS = "dateTime",   # non-wear column called "wearing"
                          cts = "chngActivity",
                          streamFrame = NULL,
                          allowanceFrame= 3,
                          newcolname = "wearing")
  return(choi_test)
}


choiRun <- lapply(corTimeLst, allChoi)#applying the function to each participant on the list
choiFlat <- ldply(choiRun, data.frame)#Flattening the list into a df

allData什么是twolest?你为什么要写choiRun?哎呀,对不起,那是我在测试一个较小的子集,我忘了把它拿出来。刚刚做了更正。可能会重复查找,尤其是
ff
bigmemory
,和(如中所示)。好的,谢谢@krlmlr。我以前在数据帧中使用过ff。我将尝试在列表中使用它。