src <- list(a=list(a.1=list(a.1.1=list(a.1.1.1=1, a.1.1.1=2, a.1.1.1=3), a.1.2=1, a.1.2=2, a.1.2=3), a.2=list(a.2.1=list())), b=NULL, c=data.frame(a=1:3, b=3:5)) listDuplicatesProcess( src=src, handle.duplicates="stop", do.return.flat=TRUE, .delim.index="-", .delim.path="/" ) #+++++ listDuplicatesProcess( src=src, handle.duplicates="keep.original", do.return.flat=TRUE, .delim.index="-", .delim.path="/" ) listDuplicatesProcess( src=src, handle.duplicates="keep.original", do.return.flat=FALSE, .delim.index="-", .delim.path="/" ) #+++++ listDuplicatesProcess( src=src, handle.duplicates="keep.first", do.return.flat=FALSE, .delim.index="-", .delim.path="/" ) #+++++ listDuplicatesProcess( src=src, handle.duplicates="keep.last", do.return.flat=FALSE, .delim.index="-", .delim.path="/" ) #+++++ listDuplicatesProcess( src=src, handle.duplicates="index.duplicates", do.return.flat=FALSE, .delim.index="-", .delim.path="/" ) listDuplicatesProcess( src=src, handle.duplicates="index.all", do.return.flat=FALSE, .delim.index="-", .delim.path="/" ) #+++++ src.flat <- flatten(src, do.index=TRUE) listDuplicatesProcess( src=src.flat, handle.duplicates="keep.original", do.return.flat=FALSE, .delim.index="-", .delim.path="/" ) #+++++ testData = expand.grid(letters[1:4],c(1:3)) testData$keep=F uniqueIDS = unique(testData$Var1) for(thisID in uniqueIDS) { firstCaseOnly = match(thisID,testData$Var1) testData[firstCaseOnly,"keep"]=T } (testData = testData[testData$keep==T,])