Hi all, Something is working but the data is NULL. I tried this: library(foreign)> dt <- data.restore4("C:/Users/FTSI/Desktop/2 ICGPA/1ACTIVITY.sdd") > head(dt); tail(dt)NULL NULL On Mon, Feb 27, 2017 at 12:57 AM, William Dunlap <wdunlap at tibco.com> wrote:> You should be looking for foreign::data.restore, not data.dump nor read.S. > > In any case, I think that foreign::data.restore does not recognize > S-version4 > data.dump files, ones whose first line is > ## Dump S Version 4 Dump ## > Here is a quickly written and barely tested function that should read > data.frames > and other simple S+ objects in SV4 data.dump files. It stores the > objects it reads > from the file 'file' in the environment 'env'. > > data.restore4 <- function(file, print = FALSE, verbose = FALSE, env > .GlobalEnv) > { > if (!inherits(file, "connection")) { > file <- file(file, "r") > on.exit(close(file)) > } > lineNo <- 0 > nextLine <- function(n = 1) { > lineNo <<- lineNo + n > readLines(file, n = n) > } > Message <- function(...) { > if (verbose) { > message(simpleMessage(paste("(line ", lineNo, ") ", > paste(..., collapse = " "), sep = ""), sys.call(-1))) > } > } > Stop <- function(...) { > stop(simpleError(paste(paste(..., collapse = " "), sep = "", > " (file ", deparse(summary(file)$description), ", line ", > lineNo, ")"), sys.call(-1))) > } > txt <- nextLine() > stopifnot(txt == "## Dump S Version 4 Dump ##") > .data.restore4 <- function() > { > class <- nextLine() > mode <- nextLine() > length <- as.numeric(tmp <- nextLine()) > if (is.na(length) || length%%1 != 0 || length < 0) { > Stop("Expected nonnegative integer 'length' at line ", > lineNo, " but got ", deparse(tmp)) > } > if (mode == "character") { > nextLine(length) > } else if (mode == "logical") { > txt <- nextLine(length) > lglVector <- rep(NA, length) > lglVector[txt != "N"] <- as.logical(as.integer(txt[txt !> "N"])) > lglVector > } else if (mode %in% c("integer", "single", "numeric")) { > txt <- nextLine(length) > txt[txt == "M"] <- "NaN" > txt[txt == "I"] <- "Inf" > txt[txt == "J"] <- "-Inf" > atomicVector <- rep(as(NA, mode), length) > atomicVector[txt != "N"] <- as(txt[txt != "N"], mode) > atomicVector > } else if (mode == "complex") { > txt <- nextLine(length) > txt <- gsub("M", "NaN", txt) > txt <- gsub("\\<I\\>", "Inf", txt) > txt <- gsub("\\<J\\>", "-Inf", txt) > atomicVector <- rep(as(NA, mode), length) > atomicVector[txt != "N"] <- as(txt[txt != "N"], mode) > atomicVector > } else if (mode == "list") { > vectors <- lapply(seq_len(length), function(i).data.restore4()) > vectors > } else if (mode == "NULL") { > NULL > } else if (mode == "structure") { > vectors <- lapply(seq_len(length), function(i).data.restore4()) > if (class == ".named_I" || class == "named") { > if (length != 2) { > Stop("expected length of '.named_I' component is > 2, but got ", length) > } else if (length(vectors[[1]]) != length(vectors[[2]])) { > Stop("expected lengths of '.named_I' components to > be the same, but got ", length(vectors[[1]]), " and ", > length(vectors[[2]])) > } else if (!is.character(vectors[[2]])) { > Stop("expected second component of '.named_I' to > be character, but got ", deparse(mode(vectors[[2]]))) > } > names(vectors[[1]]) <- vectors[[2]] > if (identical(vectors[[2]][1], ".Data")) { # a hack - > really want to know if vectors[[1] had mode "structure" or not > do.call(structure, vectors[[1]], quote = TRUE) > } else { > vectors[[1]] > } > } else { > vectors # TODO: is this ok? It assumes that is within > a .Named_I/structure > } > } else if (mode == "name") { > if (length != 1) { > Stop("expected length of 'name' objects is 1, but got", > length) > } > as.name(nextLine()) > } else if (mode == "call") { > callList <- lapply(seq_len(length), > function(i).data.restore4()) > as.call(callList) > } else { > Stop("Unimplemented mode: ", deparse(mode)) > } > } > while (length(objName <- nextLine()) == 1) { > Message(objName, ": ") > obj <- .data.restore4() > Message("class ", deparse(class(obj)), ", size=", > object.size(obj), "\n") > assign(objName, obj, envir=env) > } > } > > > > Bill Dunlap > TIBCO Software > wdunlap tibco.com > > > On Sun, Feb 26, 2017 at 4:28 AM, roslinazairimah zakaria > <roslinaump at gmail.com> wrote: > > Hi Michael, > > > > Yes, I did tried and still got error: > > > > > >> library(foreign) > > > >> data.dump(oldStyle=TRUE) > > Error in eval(expr, envir, enclos) : could not find function "data.dump" > >> source(.trPaths[5], echo=TRUE, max.deparse.length=150) > > > >> read.S(file.path("C:/Users/FTSI/Desktop/2 ICGPA/1ACTIVITY.sdd")) > > Error in read.S(file.path("C:/Users/FTSI/Desktop/2 > ICGPA/1ACTIVITY.sdd")) : > > not an S object > > > > Thank you. > > > > On Sun, Feb 26, 2017 at 8:12 PM, Michael Dewey <lists at dewey.myzen.co.uk> > > wrote: > >> > >> Did you do > >> library(foreign) > >> first? > >> > >> > >> On 26/02/2017 07:23, roslinazairimah zakaria wrote: > >>> > >>> Hi William, > >>> > >>> Thank you so much for your reply. > >>> > >>> However, I still got error message: > >>> > >>>> data.dump(oldStyle=TRUE) > >>> > >>> Error: could not find function "data.dump" > >>>> > >>>> data.restore("C:/Users/FTSI/Desktop/2 ICGPA/1ACTIVITY.sdd") > >>> > >>> Error: could not find function "data.restore" > >>> > >>> Thank you. > >>> > >>> > >>> > >>> On Sun, Feb 26, 2017 at 12:42 AM, William Dunlap <wdunlap at tibco.com> > >>> wrote: > >>> > >>>> The sdd file extension may mean that the file is in S+ 'data dump' > >>>> format, > >>>> made by S+'s data.dump function and readable in S+ by its data.restore > >>>> function. > >>>> foreign::data.restore can read some such files in R, but I think it > >>>> may only read well > >>>> those with using the pre-1991 format made in more recent versions of > >>>> S+ with data.dump(old.style=TRUE). > >>>> Bill Dunlap > >>>> TIBCO Software > >>>> wdunlap tibco.com > >>>> > >>>> > >>>> On Fri, Feb 24, 2017 at 8:58 PM, roslinazairimah zakaria > >>>> <roslinaump at gmail.com> wrote: > >>>>> > >>>>> Dear r-users, > >>>>> > >>>>> I would like to read S-Plus data (.ssd) into R. I tried this: > >>>>> > >>>>> library(foreign) > >>>>> read.S("C:/Users/FTSI/Desktop/2 ICGPA/1ACTIVITY.sdd") > >>>>> > >>>>> and got this message: > >>>>> > >>>>> read.S("C:/Users/FTSI/Desktop/2 ICGPA/1ACTIVITY.sdd") > >>>>> Error in read.S("C:/Users/FTSI/Desktop/2 ICGPA/1ACTIVITY.sdd") : > >>>>> not an S object > >>>>> > >>>>> What is wrong with this? Thank you so much for your help. > >>>>> > >>>>> -- > >>>>> *Roslinazairimah Zakaria* > >>>>> *Tel: +609-5492370; Fax. No.+609-5492766* > >>>>> > >>>>> *Email: roslinazairimah at ump.edu.my <roslinazairimah at ump.edu.my>; > >>>>> roslinaump at gmail.com <roslinaump at gmail.com>* > >>>>> Faculty of Industrial Sciences & Technology > >>>>> University Malaysia Pahang > >>>>> Lebuhraya Tun Razak, 26300 Gambang, Pahang, Malaysia > >>>>> > >>>>> [[alternative HTML version deleted]] > >>>>> > >>>>> ______________________________________________ > >>>>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > >>>>> https://stat.ethz.ch/mailman/listinfo/r-help > >>>>> PLEASE do read the posting guide http://www.R-project.org/ > >>>> > >>>> posting-guide.html > >>>>> > >>>>> and provide commented, minimal, self-contained, reproducible code. > >>>> > >>>> > >>> > >>> > >>> > >> > >> -- > >> Michael > >> http://www.dewey.myzen.co.uk/home.html > > > > > > > > > > -- > > Roslinazairimah Zakaria > > Tel: +609-5492370; Fax. No.+609-5492766 > > Email: roslinazairimah at ump.edu.my; roslinaump at gmail.com > > Faculty of Industrial Sciences & Technology > > University Malaysia Pahang > > Lebuhraya Tun Razak, 26300 Gambang, Pahang, Malaysia >-- *Roslinazairimah Zakaria* *Tel: +609-5492370; Fax. No.+609-5492766* *Email: roslinazairimah at ump.edu.my <roslinazairimah at ump.edu.my>; roslinaump at gmail.com <roslinaump at gmail.com>* Faculty of Industrial Sciences & Technology University Malaysia Pahang Lebuhraya Tun Razak, 26300 Gambang, Pahang, Malaysia [[alternative HTML version deleted]]
> It stores the objects it reads from the file 'file' in the environment 'env'. > > data.restore4 <- function(file, print = FALSE, verbose = FALSE, env .GlobalEnv)It returns NULL. foreign::data.restore() returns the 'file' argument and I should have copied that behavior (even though it is not very useful). You can use verbose=TRUE to have it print the names of what it found in the file. Use it as data.restore4("yourFile.sdd", verbose=TRUE, env = SplusDataEnv <- new.env()) Then objects(SplusDataEnv) will list what in the file and SplusDataEnv[["name"]] with get the dataset "name" from the file. Bill Dunlap TIBCO Software wdunlap tibco.com On Sun, Feb 26, 2017 at 3:47 PM, roslinazairimah zakaria <roslinaump at gmail.com> wrote:> Hi all, > > Something is working but the data is NULL. > > I tried this: > > library(foreign) >> dt <- data.restore4("C:/Users/FTSI/Desktop/2 ICGPA/1ACTIVITY.sdd") >> head(dt); tail(dt) > NULL > NULL > > > On Mon, Feb 27, 2017 at 12:57 AM, William Dunlap <wdunlap at tibco.com> wrote: >> >> You should be looking for foreign::data.restore, not data.dump nor read.S. >> >> In any case, I think that foreign::data.restore does not recognize >> S-version4 >> data.dump files, ones whose first line is >> ## Dump S Version 4 Dump ## >> Here is a quickly written and barely tested function that should read >> data.frames >> and other simple S+ objects in SV4 data.dump files. It stores the >> objects it reads >> from the file 'file' in the environment 'env'. >> >> data.restore4 <- function(file, print = FALSE, verbose = FALSE, env >> .GlobalEnv) >> { >> if (!inherits(file, "connection")) { >> file <- file(file, "r") >> on.exit(close(file)) >> } >> lineNo <- 0 >> nextLine <- function(n = 1) { >> lineNo <<- lineNo + n >> readLines(file, n = n) >> } >> Message <- function(...) { >> if (verbose) { >> message(simpleMessage(paste("(line ", lineNo, ") ", >> paste(..., collapse = " "), sep = ""), sys.call(-1))) >> } >> } >> Stop <- function(...) { >> stop(simpleError(paste(paste(..., collapse = " "), sep = "", >> " (file ", deparse(summary(file)$description), ", line ", >> lineNo, ")"), sys.call(-1))) >> } >> txt <- nextLine() >> stopifnot(txt == "## Dump S Version 4 Dump ##") >> .data.restore4 <- function() >> { >> class <- nextLine() >> mode <- nextLine() >> length <- as.numeric(tmp <- nextLine()) >> if (is.na(length) || length%%1 != 0 || length < 0) { >> Stop("Expected nonnegative integer 'length' at line ", >> lineNo, " but got ", deparse(tmp)) >> } >> if (mode == "character") { >> nextLine(length) >> } else if (mode == "logical") { >> txt <- nextLine(length) >> lglVector <- rep(NA, length) >> lglVector[txt != "N"] <- as.logical(as.integer(txt[txt !>> "N"])) >> lglVector >> } else if (mode %in% c("integer", "single", "numeric")) { >> txt <- nextLine(length) >> txt[txt == "M"] <- "NaN" >> txt[txt == "I"] <- "Inf" >> txt[txt == "J"] <- "-Inf" >> atomicVector <- rep(as(NA, mode), length) >> atomicVector[txt != "N"] <- as(txt[txt != "N"], mode) >> atomicVector >> } else if (mode == "complex") { >> txt <- nextLine(length) >> txt <- gsub("M", "NaN", txt) >> txt <- gsub("\\<I\\>", "Inf", txt) >> txt <- gsub("\\<J\\>", "-Inf", txt) >> atomicVector <- rep(as(NA, mode), length) >> atomicVector[txt != "N"] <- as(txt[txt != "N"], mode) >> atomicVector >> } else if (mode == "list") { >> vectors <- lapply(seq_len(length), >> function(i).data.restore4()) >> vectors >> } else if (mode == "NULL") { >> NULL >> } else if (mode == "structure") { >> vectors <- lapply(seq_len(length), >> function(i).data.restore4()) >> if (class == ".named_I" || class == "named") { >> if (length != 2) { >> Stop("expected length of '.named_I' component is >> 2, but got ", length) >> } else if (length(vectors[[1]]) != length(vectors[[2]])) { >> Stop("expected lengths of '.named_I' components to >> be the same, but got ", length(vectors[[1]]), " and ", >> length(vectors[[2]])) >> } else if (!is.character(vectors[[2]])) { >> Stop("expected second component of '.named_I' to >> be character, but got ", deparse(mode(vectors[[2]]))) >> } >> names(vectors[[1]]) <- vectors[[2]] >> if (identical(vectors[[2]][1], ".Data")) { # a hack - >> really want to know if vectors[[1] had mode "structure" or not >> do.call(structure, vectors[[1]], quote = TRUE) >> } else { >> vectors[[1]] >> } >> } else { >> vectors # TODO: is this ok? It assumes that is within >> a .Named_I/structure >> } >> } else if (mode == "name") { >> if (length != 1) { >> Stop("expected length of 'name' objects is 1, but got", >> length) >> } >> as.name(nextLine()) >> } else if (mode == "call") { >> callList <- lapply(seq_len(length), >> function(i).data.restore4()) >> as.call(callList) >> } else { >> Stop("Unimplemented mode: ", deparse(mode)) >> } >> } >> while (length(objName <- nextLine()) == 1) { >> Message(objName, ": ") >> obj <- .data.restore4() >> Message("class ", deparse(class(obj)), ", size=", >> object.size(obj), "\n") >> assign(objName, obj, envir=env) >> } >> } >> >> >> >> Bill Dunlap >> TIBCO Software >> wdunlap tibco.com >> >> >> On Sun, Feb 26, 2017 at 4:28 AM, roslinazairimah zakaria >> <roslinaump at gmail.com> wrote: >> > Hi Michael, >> > >> > Yes, I did tried and still got error: >> > >> > >> >> library(foreign) >> > >> >> data.dump(oldStyle=TRUE) >> > Error in eval(expr, envir, enclos) : could not find function "data.dump" >> >> source(.trPaths[5], echo=TRUE, max.deparse.length=150) >> > >> >> read.S(file.path("C:/Users/FTSI/Desktop/2 ICGPA/1ACTIVITY.sdd")) >> > Error in read.S(file.path("C:/Users/FTSI/Desktop/2 >> > ICGPA/1ACTIVITY.sdd")) : >> > not an S object >> > >> > Thank you. >> > >> > On Sun, Feb 26, 2017 at 8:12 PM, Michael Dewey <lists at dewey.myzen.co.uk> >> > wrote: >> >> >> >> Did you do >> >> library(foreign) >> >> first? >> >> >> >> >> >> On 26/02/2017 07:23, roslinazairimah zakaria wrote: >> >>> >> >>> Hi William, >> >>> >> >>> Thank you so much for your reply. >> >>> >> >>> However, I still got error message: >> >>> >> >>>> data.dump(oldStyle=TRUE) >> >>> >> >>> Error: could not find function "data.dump" >> >>>> >> >>>> data.restore("C:/Users/FTSI/Desktop/2 ICGPA/1ACTIVITY.sdd") >> >>> >> >>> Error: could not find function "data.restore" >> >>> >> >>> Thank you. >> >>> >> >>> >> >>> >> >>> On Sun, Feb 26, 2017 at 12:42 AM, William Dunlap <wdunlap at tibco.com> >> >>> wrote: >> >>> >> >>>> The sdd file extension may mean that the file is in S+ 'data dump' >> >>>> format, >> >>>> made by S+'s data.dump function and readable in S+ by its >> >>>> data.restore >> >>>> function. >> >>>> foreign::data.restore can read some such files in R, but I think it >> >>>> may only read well >> >>>> those with using the pre-1991 format made in more recent versions of >> >>>> S+ with data.dump(old.style=TRUE). >> >>>> Bill Dunlap >> >>>> TIBCO Software >> >>>> wdunlap tibco.com >> >>>> >> >>>> >> >>>> On Fri, Feb 24, 2017 at 8:58 PM, roslinazairimah zakaria >> >>>> <roslinaump at gmail.com> wrote: >> >>>>> >> >>>>> Dear r-users, >> >>>>> >> >>>>> I would like to read S-Plus data (.ssd) into R. I tried this: >> >>>>> >> >>>>> library(foreign) >> >>>>> read.S("C:/Users/FTSI/Desktop/2 ICGPA/1ACTIVITY.sdd") >> >>>>> >> >>>>> and got this message: >> >>>>> >> >>>>> read.S("C:/Users/FTSI/Desktop/2 ICGPA/1ACTIVITY.sdd") >> >>>>> Error in read.S("C:/Users/FTSI/Desktop/2 ICGPA/1ACTIVITY.sdd") : >> >>>>> not an S object >> >>>>> >> >>>>> What is wrong with this? Thank you so much for your help. >> >>>>> >> >>>>> -- >> >>>>> *Roslinazairimah Zakaria* >> >>>>> *Tel: +609-5492370; Fax. No.+609-5492766* >> >>>>> >> >>>>> *Email: roslinazairimah at ump.edu.my <roslinazairimah at ump.edu.my>; >> >>>>> roslinaump at gmail.com <roslinaump at gmail.com>* >> >>>>> Faculty of Industrial Sciences & Technology >> >>>>> University Malaysia Pahang >> >>>>> Lebuhraya Tun Razak, 26300 Gambang, Pahang, Malaysia >> >>>>> >> >>>>> [[alternative HTML version deleted]] >> >>>>> >> >>>>> ______________________________________________ >> >>>>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >> >>>>> https://stat.ethz.ch/mailman/listinfo/r-help >> >>>>> PLEASE do read the posting guide http://www.R-project.org/ >> >>>> >> >>>> posting-guide.html >> >>>>> >> >>>>> and provide commented, minimal, self-contained, reproducible code. >> >>>> >> >>>> >> >>> >> >>> >> >>> >> >> >> >> -- >> >> Michael >> >> http://www.dewey.myzen.co.uk/home.html >> > >> > >> > >> > >> > -- >> > Roslinazairimah Zakaria >> > Tel: +609-5492370; Fax. No.+609-5492766 >> > Email: roslinazairimah at ump.edu.my; roslinaump at gmail.com >> > Faculty of Industrial Sciences & Technology >> > University Malaysia Pahang >> > Lebuhraya Tun Razak, 26300 Gambang, Pahang, Malaysia > > > > > -- > Roslinazairimah Zakaria > Tel: +609-5492370; Fax. No.+609-5492766 > Email: roslinazairimah at ump.edu.my; roslinaump at gmail.com > Faculty of Industrial Sciences & Technology > University Malaysia Pahang > Lebuhraya Tun Razak, 26300 Gambang, Pahang, Malaysia
Hi Willianm, Thank you. However, still null:> library(foreign) > dt <- data.restore4("C:/Users/FTSI/Desktop/2 ICGPA/1ACTIVITY.sdd",verbose=TRUE, print=TRUE, env = SplusDataEnv <- new.env())> SplusDataEnv[["dt"]]NULL On Mon, Feb 27, 2017 at 10:41 AM, William Dunlap <wdunlap at tibco.com> wrote:> > It stores the objects it reads from the file 'file' in the environment > 'env'. > > > > data.restore4 <- function(file, print = FALSE, verbose = FALSE, env > .GlobalEnv) > > It returns NULL. foreign::data.restore() returns the 'file' argument > and I should have copied that behavior (even though it is not very > useful). You can use verbose=TRUE to have it print the names of what > it found in the file. > > Use it as > data.restore4("yourFile.sdd", verbose=TRUE, env = SplusDataEnv <- > new.env()) > Then objects(SplusDataEnv) will list what in the file and > SplusDataEnv[["name"]] with get the dataset "name" from the file. > > Bill Dunlap > TIBCO Software > wdunlap tibco.com > > > On Sun, Feb 26, 2017 at 3:47 PM, roslinazairimah zakaria > <roslinaump at gmail.com> wrote: > > Hi all, > > > > Something is working but the data is NULL. > > > > I tried this: > > > > library(foreign) > >> dt <- data.restore4("C:/Users/FTSI/Desktop/2 ICGPA/1ACTIVITY.sdd") > >> head(dt); tail(dt) > > NULL > > NULL > > > > > > On Mon, Feb 27, 2017 at 12:57 AM, William Dunlap <wdunlap at tibco.com> > wrote: > >> > >> You should be looking for foreign::data.restore, not data.dump nor > read.S. > >> > >> In any case, I think that foreign::data.restore does not recognize > >> S-version4 > >> data.dump files, ones whose first line is > >> ## Dump S Version 4 Dump ## > >> Here is a quickly written and barely tested function that should read > >> data.frames > >> and other simple S+ objects in SV4 data.dump files. It stores the > >> objects it reads > >> from the file 'file' in the environment 'env'. > >> > >> data.restore4 <- function(file, print = FALSE, verbose = FALSE, env > >> .GlobalEnv) > >> { > >> if (!inherits(file, "connection")) { > >> file <- file(file, "r") > >> on.exit(close(file)) > >> } > >> lineNo <- 0 > >> nextLine <- function(n = 1) { > >> lineNo <<- lineNo + n > >> readLines(file, n = n) > >> } > >> Message <- function(...) { > >> if (verbose) { > >> message(simpleMessage(paste("(line ", lineNo, ") ", > >> paste(..., collapse = " "), sep = ""), sys.call(-1))) > >> } > >> } > >> Stop <- function(...) { > >> stop(simpleError(paste(paste(..., collapse = " "), sep = "", > >> " (file ", deparse(summary(file)$description), ", line ", > >> lineNo, ")"), sys.call(-1))) > >> } > >> txt <- nextLine() > >> stopifnot(txt == "## Dump S Version 4 Dump ##") > >> .data.restore4 <- function() > >> { > >> class <- nextLine() > >> mode <- nextLine() > >> length <- as.numeric(tmp <- nextLine()) > >> if (is.na(length) || length%%1 != 0 || length < 0) { > >> Stop("Expected nonnegative integer 'length' at line ", > >> lineNo, " but got ", deparse(tmp)) > >> } > >> if (mode == "character") { > >> nextLine(length) > >> } else if (mode == "logical") { > >> txt <- nextLine(length) > >> lglVector <- rep(NA, length) > >> lglVector[txt != "N"] <- as.logical(as.integer(txt[txt !> >> "N"])) > >> lglVector > >> } else if (mode %in% c("integer", "single", "numeric")) { > >> txt <- nextLine(length) > >> txt[txt == "M"] <- "NaN" > >> txt[txt == "I"] <- "Inf" > >> txt[txt == "J"] <- "-Inf" > >> atomicVector <- rep(as(NA, mode), length) > >> atomicVector[txt != "N"] <- as(txt[txt != "N"], mode) > >> atomicVector > >> } else if (mode == "complex") { > >> txt <- nextLine(length) > >> txt <- gsub("M", "NaN", txt) > >> txt <- gsub("\\<I\\>", "Inf", txt) > >> txt <- gsub("\\<J\\>", "-Inf", txt) > >> atomicVector <- rep(as(NA, mode), length) > >> atomicVector[txt != "N"] <- as(txt[txt != "N"], mode) > >> atomicVector > >> } else if (mode == "list") { > >> vectors <- lapply(seq_len(length), > >> function(i).data.restore4()) > >> vectors > >> } else if (mode == "NULL") { > >> NULL > >> } else if (mode == "structure") { > >> vectors <- lapply(seq_len(length), > >> function(i).data.restore4()) > >> if (class == ".named_I" || class == "named") { > >> if (length != 2) { > >> Stop("expected length of '.named_I' component is > >> 2, but got ", length) > >> } else if (length(vectors[[1]]) !> length(vectors[[2]])) { > >> Stop("expected lengths of '.named_I' components to > >> be the same, but got ", length(vectors[[1]]), " and ", > >> length(vectors[[2]])) > >> } else if (!is.character(vectors[[2]])) { > >> Stop("expected second component of '.named_I' to > >> be character, but got ", deparse(mode(vectors[[2]]))) > >> } > >> names(vectors[[1]]) <- vectors[[2]] > >> if (identical(vectors[[2]][1], ".Data")) { # a hack - > >> really want to know if vectors[[1] had mode "structure" or not > >> do.call(structure, vectors[[1]], quote = TRUE) > >> } else { > >> vectors[[1]] > >> } > >> } else { > >> vectors # TODO: is this ok? It assumes that is within > >> a .Named_I/structure > >> } > >> } else if (mode == "name") { > >> if (length != 1) { > >> Stop("expected length of 'name' objects is 1, but got", > >> length) > >> } > >> as.name(nextLine()) > >> } else if (mode == "call") { > >> callList <- lapply(seq_len(length), > >> function(i).data.restore4()) > >> as.call(callList) > >> } else { > >> Stop("Unimplemented mode: ", deparse(mode)) > >> } > >> } > >> while (length(objName <- nextLine()) == 1) { > >> Message(objName, ": ") > >> obj <- .data.restore4() > >> Message("class ", deparse(class(obj)), ", size=", > >> object.size(obj), "\n") > >> assign(objName, obj, envir=env) > >> } > >> } > >> > >> > >> > >> Bill Dunlap > >> TIBCO Software > >> wdunlap tibco.com > >> > >> > >> On Sun, Feb 26, 2017 at 4:28 AM, roslinazairimah zakaria > >> <roslinaump at gmail.com> wrote: > >> > Hi Michael, > >> > > >> > Yes, I did tried and still got error: > >> > > >> > > >> >> library(foreign) > >> > > >> >> data.dump(oldStyle=TRUE) > >> > Error in eval(expr, envir, enclos) : could not find function > "data.dump" > >> >> source(.trPaths[5], echo=TRUE, max.deparse.length=150) > >> > > >> >> read.S(file.path("C:/Users/FTSI/Desktop/2 ICGPA/1ACTIVITY.sdd")) > >> > Error in read.S(file.path("C:/Users/FTSI/Desktop/2 > >> > ICGPA/1ACTIVITY.sdd")) : > >> > not an S object > >> > > >> > Thank you. > >> > > >> > On Sun, Feb 26, 2017 at 8:12 PM, Michael Dewey < > lists at dewey.myzen.co.uk> > >> > wrote: > >> >> > >> >> Did you do > >> >> library(foreign) > >> >> first? > >> >> > >> >> > >> >> On 26/02/2017 07:23, roslinazairimah zakaria wrote: > >> >>> > >> >>> Hi William, > >> >>> > >> >>> Thank you so much for your reply. > >> >>> > >> >>> However, I still got error message: > >> >>> > >> >>>> data.dump(oldStyle=TRUE) > >> >>> > >> >>> Error: could not find function "data.dump" > >> >>>> > >> >>>> data.restore("C:/Users/FTSI/Desktop/2 ICGPA/1ACTIVITY.sdd") > >> >>> > >> >>> Error: could not find function "data.restore" > >> >>> > >> >>> Thank you. > >> >>> > >> >>> > >> >>> > >> >>> On Sun, Feb 26, 2017 at 12:42 AM, William Dunlap <wdunlap at tibco.com > > > >> >>> wrote: > >> >>> > >> >>>> The sdd file extension may mean that the file is in S+ 'data dump' > >> >>>> format, > >> >>>> made by S+'s data.dump function and readable in S+ by its > >> >>>> data.restore > >> >>>> function. > >> >>>> foreign::data.restore can read some such files in R, but I think it > >> >>>> may only read well > >> >>>> those with using the pre-1991 format made in more recent versions > of > >> >>>> S+ with data.dump(old.style=TRUE). > >> >>>> Bill Dunlap > >> >>>> TIBCO Software > >> >>>> wdunlap tibco.com > >> >>>> > >> >>>> > >> >>>> On Fri, Feb 24, 2017 at 8:58 PM, roslinazairimah zakaria > >> >>>> <roslinaump at gmail.com> wrote: > >> >>>>> > >> >>>>> Dear r-users, > >> >>>>> > >> >>>>> I would like to read S-Plus data (.ssd) into R. I tried this: > >> >>>>> > >> >>>>> library(foreign) > >> >>>>> read.S("C:/Users/FTSI/Desktop/2 ICGPA/1ACTIVITY.sdd") > >> >>>>> > >> >>>>> and got this message: > >> >>>>> > >> >>>>> read.S("C:/Users/FTSI/Desktop/2 ICGPA/1ACTIVITY.sdd") > >> >>>>> Error in read.S("C:/Users/FTSI/Desktop/2 ICGPA/1ACTIVITY.sdd") : > >> >>>>> not an S object > >> >>>>> > >> >>>>> What is wrong with this? Thank you so much for your help. > >> >>>>> > >> >>>>> -- > >> >>>>> *Roslinazairimah Zakaria* > >> >>>>> *Tel: +609-5492370; Fax. No.+609-5492766* > >> >>>>> > >> >>>>> *Email: roslinazairimah at ump.edu.my <roslinazairimah at ump.edu.my>; > >> >>>>> roslinaump at gmail.com <roslinaump at gmail.com>* > >> >>>>> Faculty of Industrial Sciences & Technology > >> >>>>> University Malaysia Pahang > >> >>>>> Lebuhraya Tun Razak, 26300 Gambang, Pahang, Malaysia > >> >>>>> > >> >>>>> [[alternative HTML version deleted]] > >> >>>>> > >> >>>>> ______________________________________________ > >> >>>>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > >> >>>>> https://stat.ethz.ch/mailman/listinfo/r-help > >> >>>>> PLEASE do read the posting guide http://www.R-project.org/ > >> >>>> > >> >>>> posting-guide.html > >> >>>>> > >> >>>>> and provide commented, minimal, self-contained, reproducible code. > >> >>>> > >> >>>> > >> >>> > >> >>> > >> >>> > >> >> > >> >> -- > >> >> Michael > >> >> http://www.dewey.myzen.co.uk/home.html > >> > > >> > > >> > > >> > > >> > -- > >> > Roslinazairimah Zakaria > >> > Tel: +609-5492370; Fax. No.+609-5492766 > >> > Email: roslinazairimah at ump.edu.my; roslinaump at gmail.com > >> > Faculty of Industrial Sciences & Technology > >> > University Malaysia Pahang > >> > Lebuhraya Tun Razak, 26300 Gambang, Pahang, Malaysia > > > > > > > > > > -- > > Roslinazairimah Zakaria > > Tel: +609-5492370; Fax. No.+609-5492766 > > Email: roslinazairimah at ump.edu.my; roslinaump at gmail.com > > Faculty of Industrial Sciences & Technology > > University Malaysia Pahang > > Lebuhraya Tun Razak, 26300 Gambang, Pahang, Malaysia >-- *Roslinazairimah Zakaria* *Tel: +609-5492370; Fax. No.+609-5492766* *Email: roslinazairimah at ump.edu.my <roslinazairimah at ump.edu.my>; roslinaump at gmail.com <roslinaump at gmail.com>* Faculty of Industrial Sciences & Technology University Malaysia Pahang Lebuhraya Tun Razak, 26300 Gambang, Pahang, Malaysia [[alternative HTML version deleted]]