[R-gregmisc-users] SF.net SVN: r-gregmisc: [1178] trunk/SASxport/R/write.xport.R
Brought to you by:
warnes
From: <wa...@us...> - 2007-09-13 01:19:40
|
Revision: 1178 http://r-gregmisc.svn.sourceforge.net/r-gregmisc/?rev=1178&view=rev Author: warnes Date: 2007-09-12 18:19:37 -0700 (Wed, 12 Sep 2007) Log Message: ----------- Add checking and handling for unnamed data frames or variables Modified Paths: -------------- trunk/SASxport/R/write.xport.R Modified: trunk/SASxport/R/write.xport.R =================================================================== --- trunk/SASxport/R/write.xport.R 2007-09-13 01:14:55 UTC (rev 1177) +++ trunk/SASxport/R/write.xport.R 2007-09-13 01:19:37 UTC (rev 1178) @@ -34,11 +34,18 @@ mc$osType <- NULL mc$cDate <- NULL mc[[1]] <- NULL + mc <- as.character(mc) if(is.null(dfNames)) { dfNames <- mc } + if(length(dfNames) < length(list)) + { + warning("Fewer names than datasets. Creating default names.") + dfNames[length(dfNames):length(list)] = "NONAME" + } + dfNames[dfNames==""] <- mc[dfNames==""] names(list) <- dfNames @@ -96,9 +103,11 @@ dfNames[long.names] <- new.names } - scat("Ensure object names are unique...\n") - if(any(duplicated(dfNames))) - stop("object names are not unique: ", paste(1:length(dfNames),":'",dfNames,"'",sep="",collapse=", " )) + scat("Ensure object names are valid and unique...\n") + dfNames <- substr(make.names(dfNames, unique=TRUE),1,8) + if( all(names(list)!=dfNames)) + warning("Data frame names modified to obey SAS rules") + names(list) <- dfNames @@ -129,7 +138,26 @@ { df <- list[[i]] - varNames <- colnames(df) + + if(is.null(colnames(df))) + colnames(df) <- list(length=ncol(df)) + + emptyFlag <- ( colnames(df)=="" | is.na(colnames(df)) ) + if(any(emptyFlag)) + { + warning("Unnamed variables detected. Creating defalut variable names.") + colnames(df)[emptyFlag] = "NONAME" + list[[i]] <- df + } + + varNames <- substr(make.names(colnames(df), unique=TRUE),1,8) + if( any(colnames(df)!=varNames)) + { + warning("Variable names modified to obey SAS rules") + colnames(df) <- varNames + list[[i]] <- df + } + offsetTable <- data.frame("name"=varNames, "len"=NA, "offset"=NA ) rownames(offsetTable) <- offsetTable[,"name"] This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |