SCM

SCM Repository

[tm] Annotation of /pkg/R/corpus.R
ViewVC logotype

Annotation of /pkg/R/corpus.R

Parent Directory Parent Directory | Revision Log Revision Log


Revision 64 - (view) (download)
Original Path: trunk/R/textmin/R/textdoccol.R

1 : feinerer 17 # Author: Ingo Feinerer
2 :    
3 : feinerer 63 # ... fuer Argumente des Funktionengenerators
4 :     setGeneric("TextDocCol", function(object, parser = plaintext_parser, ...) standardGeneric("TextDocCol"))
5 : feinerer 49 setMethod("TextDocCol",
6 : feinerer 63 signature(object = "Source"),
7 :     function(object, parser = plaintext_parser) {
8 :     if (inherits(parser, "function_generator"))
9 :     parser <- parser(...)
10 :    
11 :     tdl <- list()
12 :     counter <- 1
13 :     while (!eoi(object)) {
14 :     object <- stepNext(object)
15 :     elem <- getElem(object)
16 :     # If there is no Load on Demand support
17 :     # we need to load the corpus into memory at startup
18 :     if (object@LoDSupport)
19 :     load <- object@Load
20 :     else
21 :     load <- TRUE
22 :     tdl <- c(tdl, list(parser(elem, object@LoDSupport, load, as.character(counter))))
23 :     counter <- counter + 1
24 :     }
25 :    
26 : feinerer 60 return(new("TextDocCol", .Data = tdl))
27 : feinerer 21 })
28 :    
29 : feinerer 63 setGeneric("DirSource", function(directory, load = FALSE) standardGeneric("DirSource"))
30 :     setMethod("DirSource",
31 :     signature(directory = "character"),
32 :     function(directory, load = FALSE) {
33 :     new("DirSource", LoDSupport = TRUE, FileList = dir(directory, full.names = TRUE),
34 :     Position = 0, Load = load)
35 :     })
36 : feinerer 60
37 : feinerer 63 setGeneric("CSVSource", function(file) standardGeneric("CSVSource"))
38 :     setMethod("CSVSource",
39 :     signature(file = "character"),
40 :     function(file) {
41 :     new("CSVSource", LoDSupport = FALSE, FileName = file,
42 :     Content = scan(file, what = "character"), Position = 0)
43 :     })
44 : feinerer 60
45 : feinerer 63 setGeneric("Reuters21578XMLSource", function(file) standardGeneric("Reuters21578XMLSource"))
46 :     setMethod("Reuters21578XMLSource",
47 :     signature(file = "character"),
48 :     function(file) {
49 :     tree <- xmlTreeParse(file)
50 :     content <- xmlRoot(tree)$children
51 :     new("Reuters21578XMLSource", LoDSupport = FALSE, FileName = file,
52 :     Content = content, Position = 0)
53 :     })
54 :    
55 :     setGeneric("stepNext", function(object) standardGeneric("stepNext"))
56 :     setMethod("stepNext",
57 :     signature(object = "DirSource"),
58 :     function(object) {
59 :     object@Position <- object@Position + 1
60 :     object
61 :     })
62 :     setMethod("stepNext",
63 :     signature(object = "CSVSource"),
64 :     function(object) {
65 :     object@Position <- object@Position + 1
66 :     object
67 :     })
68 :     setMethod("stepNext",
69 :     signature(object = "Reuters21578XMLSource"),
70 :     function(object) {
71 :     object@Position <- object@Position + 1
72 :     object
73 :     })
74 :    
75 :     setGeneric("getElem", function(object) standardGeneric("getElem"))
76 :     setMethod("getElem",
77 :     signature(object = "DirSource"),
78 :     function(object) {
79 :     list(content = readLines(object@FileList[object@Position]),
80 :     filename = object@FileList[object@Position])
81 :     })
82 :     setMethod("getElem",
83 :     signature(object = "CSVSource"),
84 :     function(object) {
85 :     list(content = object@Content[object@Position],
86 :     filename = object@FileName)
87 :     })
88 :     setMethod("getElem",
89 :     signature(object = "Reuters21578XMLSource"),
90 :     function(object) {
91 :     list(content = object@Content[object@Position],
92 :     filename = object@FileName)
93 :     })
94 :    
95 :     setGeneric("eoi", function(object) standardGeneric("eoi"))
96 :     setMethod("eoi",
97 :     signature(object = "DirSource"),
98 :     function(object) {
99 :     if (length(object@FileList) <= object@Position)
100 :     return(TRUE)
101 :     else
102 :     return(FALSE)
103 :     })
104 :     setMethod("eoi",
105 :     signature(object = "CSVSource"),
106 :     function(object) {
107 :     if (length(object@Content) <= object@Position)
108 :     return(TRUE)
109 :     else
110 :     return(FALSE)
111 :     })
112 :     setMethod("eoi",
113 :     signature(object = "Reuters21578XMLSource"),
114 :     function(object) {
115 :     if (length(object@Content) <= object@Position)
116 :     return(TRUE)
117 :     else
118 :     return(FALSE)
119 :     })
120 :    
121 :     plaintext_parser <- function(...) {
122 :     function(elem, lodsupport, load, id) {
123 :     if (!lodsupport || (lodsupport && load)) {
124 :     doc <- new("PlainTextDocument", .Data = elem$content, FileName = elem$filename, Cached = TRUE,
125 :     Author = "", DateTimeStamp = date(), Description = "", ID = id, Origin = "", Heading = "")
126 :     }
127 :     else {
128 :     doc <- new("PlainTextDocument", FileName = elem$filename, Cached = FALSE,
129 :     Author = "", DateTimeStamp = date(), Description = "", ID = id, Origin = "", Heading = "")
130 :     }
131 :    
132 :     return(doc)
133 : feinerer 60 }
134 :     }
135 : feinerer 63 class(plaintext_parser) <- "function_generator"
136 : feinerer 60
137 : feinerer 63 reuters21578xml_parser <- function(...) {
138 :     function(elem, lodsupport, load, id) {
139 :     tree <- xmlTreeParse(elem$filename)
140 :     node <- xmlRoot(tree)
141 : feinerer 60
142 : feinerer 63 # The <AUTHOR></AUTHOR> tag is unfortunately NOT obligatory!
143 :     if (!is.null(node[["TEXT"]][["AUTHOR"]]))
144 :     author <- xmlValue(node[["TEXT"]][["AUTHOR"]])
145 :     else
146 :     author <- ""
147 : feinerer 60
148 : feinerer 63 datetimestamp <- xmlValue(node[["DATE"]])
149 :     description <- ""
150 :     id <- xmlAttrs(node)[["NEWID"]]
151 : feinerer 40
152 : feinerer 63 # The <TITLE></TITLE> tag is unfortunately NOT obligatory!
153 :     if (!is.null(node[["TEXT"]][["TITLE"]]))
154 :     heading <- xmlValue(node[["TEXT"]][["TITLE"]])
155 :     else
156 :     heading <- ""
157 : feinerer 41
158 : feinerer 63 topics <- unlist(xmlApply(node[["TOPICS"]], function(x) xmlValue(x)), use.names = FALSE)
159 : feinerer 41
160 : feinerer 63 if (!lodsupport || (lodsupport && load)) {
161 :     doc <- new("XMLTextDocument", .Data = elem$content, FileName = elem$filename, Cached = TRUE, Author = author,
162 :     DateTimeStamp = datetimestamp, Description = "", ID = id, Origin = "Reuters-21578 XML",
163 :     Heading = heading, LocalMetaData = list(Topics = topics))
164 :     } else {
165 :     doc <- new("XMLTextDocument", FileName = elem$filename, Cached = FALSE, Author = author,
166 :     DateTimeStamp = datetimestamp, Description = "", ID = id, Origin = "Reuters-21578 XML",
167 :     Heading = heading, LocalMetaData = list(Topics = topics))
168 :     }
169 : feinerer 40
170 : feinerer 63 return(doc)
171 : feinerer 60 }
172 :     }
173 : feinerer 63 class(reuters21578xml_parser) <- "function_generator"
174 : feinerer 41
175 : feinerer 63 rcv1_parser <- function(...) {
176 :     function(elem, lodsupport, load, id) {
177 :     tree <- xmlTreeParse(elem$filename)
178 :     node <- xmlRoot(tree)
179 : feinerer 41
180 : feinerer 63 datetimestamp <- xmlAttrs(node)[["date"]]
181 :     id <- xmlAttrs(node)[["itemid"]]
182 :     heading <- xmlValue(node[["title"]])
183 : feinerer 40
184 : feinerer 63 if (!lodsupport || (lodsupport && load)) {
185 :     doc <- new("XMLTextDocument", .Data = elem$content, FileName = elem$filename, Cached = TRUE, Author = "",
186 :     DateTimeStamp = datetimestamp, Description = "", ID = id, Origin = "Reuters Corpus Volume 1 XML",
187 :     Heading = heading)
188 :     } else {
189 :     doc <- new("XMLTextDocument", FileName = elem$filename, Cached = FALSE, Author = "",
190 :     DateTimeStamp = datetimestamp, Description = "", ID = id, Origin = "Reuters Corpus Volume 1 XML",
191 :     Heading = heading)
192 :     }
193 : feinerer 40
194 : feinerer 63 return(doc)
195 : feinerer 60 }
196 : feinerer 40 }
197 : feinerer 63 class(rcv1_parser) <- "function_generator"
198 : feinerer 40
199 : feinerer 63 uci_kdd_newsgroup_parser <- function(...) {
200 :     function(elem, lodsupport, load, id) {
201 :     mail <- readLines(elem$filename)
202 :     author <- gsub("From: ", "", grep("^From:", mail, value = TRUE))
203 :     datetimestamp <- gsub("Date: ", "", grep("^Date:", mail, value = TRUE))
204 :     origin <- gsub("Path: ", "", grep("^Path:", mail, value = TRUE))
205 :     heading <- gsub("Subject: ", "", grep("^Subject:", mail, value = TRUE))
206 :     newsgroup <- gsub("Newsgroups: ", "", grep("^Newsgroups:", mail, value = TRUE))
207 : feinerer 60
208 : feinerer 63 if (!lodsupport || (lodsupport && load)) {
209 :     index <- grep("^Lines:", mail)
210 :     content <- mail[(index + 1):length(mail)]
211 : feinerer 60
212 : feinerer 63 doc <- new("NewsgroupDocument", .Data = content, FileName = elem$filename, Cached = TRUE,
213 :     Author = author, DateTimeStamp = datetimestamp,
214 :     Description = "", ID = elem$filename, Origin = origin,
215 :     Heading = heading, Newsgroup = newsgroup)
216 :     } else {
217 :     doc <- new("NewsgroupDocument", FileName = elem$filename, Cached = FALSE, Author = author, DateTimeStamp = datetimestamp,
218 :     Description = "", ID = elem$filename, Origin = origin, Heading = heading, Newsgroup = newsgroup)
219 :     }
220 :    
221 :     return(doc)
222 : feinerer 60 }
223 :     }
224 : feinerer 63 class(uci_kdd_newsgroup_parser) <- "function_generator"
225 : feinerer 60
226 : feinerer 23 # Parse a <newsitem></newsitem> element from a well-formed RCV1 XML file
227 : feinerer 63 rcv1_to_plain <- function(node) {
228 : feinerer 42 datetimestamp <- xmlAttrs(node)[["date"]]
229 : feinerer 60 id <- xmlAttrs(node)[["itemid"]]
230 : feinerer 36 origin <- "Reuters Corpus Volume 1 XML"
231 : feinerer 18 corpus <- unlist(xmlApply(node[["text"]], xmlValue), use.names = FALSE)
232 :     heading <- xmlValue(node[["title"]])
233 : feinerer 17
234 : feinerer 60 new("PlainTextDocument", .Data = corpus, Author = "", DateTimeStamp = datetimestamp,
235 :     Description = "", ID = id, Origin = "Reuters Corpus Volume 1 XML", Heading = heading)
236 : feinerer 19 }
237 : feinerer 23
238 :     # Parse a <REUTERS></REUTERS> element from a well-formed Reuters-21578 XML file
239 : feinerer 63 reuters21578xml_to_plain <- function(node) {
240 : feinerer 36 # The <AUTHOR></AUTHOR> tag is unfortunately NOT obligatory!
241 :     if (!is.null(node[["TEXT"]][["AUTHOR"]]))
242 :     author <- xmlValue(node[["TEXT"]][["AUTHOR"]])
243 :     else
244 :     author <- ""
245 :    
246 : feinerer 42 datetimestamp <- xmlValue(node[["DATE"]])
247 : feinerer 36 description <- ""
248 : feinerer 60 id <- xmlAttrs(node)[["NEWID"]]
249 : feinerer 23
250 : feinerer 36 origin <- "Reuters-21578 XML"
251 : feinerer 23
252 :     # The <BODY></BODY> tag is unfortunately NOT obligatory!
253 :     if (!is.null(node[["TEXT"]][["BODY"]]))
254 :     corpus <- xmlValue(node[["TEXT"]][["BODY"]])
255 :     else
256 :     corpus <- ""
257 :    
258 :     # The <TITLE></TITLE> tag is unfortunately NOT obligatory!
259 :     if (!is.null(node[["TEXT"]][["TITLE"]]))
260 :     heading <- xmlValue(node[["TEXT"]][["TITLE"]])
261 :     else
262 :     heading <- ""
263 :    
264 : feinerer 49 topics <- unlist(xmlApply(node[["TOPICS"]], function(x) xmlValue(x)), use.names = FALSE)
265 :    
266 : feinerer 60 new("PlainTextDocument", .Data = corpus, Cached = TRUE, Author = author, DateTimeStamp = datetimestamp,
267 : feinerer 49 Description = description, ID = id, Origin = origin, Heading = heading, LocalMetaData = list(Topics = topics))
268 : feinerer 23 }
269 : feinerer 49
270 : feinerer 61 setGeneric("loadFileIntoMem", function(object) standardGeneric("loadFileIntoMem"))
271 : feinerer 49 setMethod("loadFileIntoMem",
272 : feinerer 62 signature(object = "PlainTextDocument"),
273 : feinerer 61 function(object) {
274 :     if (!Cached(object)) {
275 : feinerer 56 corpus <- readLines(FileName(object))
276 :     Corpus(object) <- corpus
277 : feinerer 60 Cached(object) <- TRUE
278 : feinerer 56 return(object)
279 :     } else {
280 :     return(object)
281 :     }
282 :     })
283 :     setMethod("loadFileIntoMem",
284 : feinerer 62 signature(object = "XMLTextDocument"),
285 : feinerer 61 function(object) {
286 :     if (!Cached(object)) {
287 : feinerer 56 file <- FileName(object)
288 : feinerer 49 doc <- xmlTreeParse(file)
289 :     class(doc) <- "list"
290 : feinerer 56 Corpus(object) <- doc
291 : feinerer 60 Cached(object) <- TRUE
292 : feinerer 49 return(object)
293 :     } else {
294 :     return(object)
295 :     }
296 :     })
297 : feinerer 56 setMethod("loadFileIntoMem",
298 : feinerer 62 signature(object = "NewsgroupDocument"),
299 : feinerer 61 function(object) {
300 :     if (!Cached(object)) {
301 : feinerer 56 mail <- readLines(FileName(object))
302 : feinerer 60 Cached(object) <- TRUE
303 : feinerer 56 index <- grep("^Lines:", mail)
304 :     Corpus(object) <- mail[(index + 1):length(mail)]
305 :     return(object)
306 :     } else {
307 :     return(object)
308 :     }
309 :     })
310 : feinerer 49
311 : feinerer 54 setGeneric("tm_transform", function(object, FUN, ...) standardGeneric("tm_transform"))
312 :     setMethod("tm_transform",
313 : feinerer 62 signature(object = "TextDocCol", FUN = "function"),
314 : feinerer 49 function(object, FUN, ...) {
315 : feinerer 56 result <- as(lapply(object, FUN, ..., GlobalMetaData = GlobalMetaData(object)), "TextDocCol")
316 :     result@GlobalMetaData <- GlobalMetaData(object)
317 :     return(result)
318 : feinerer 49 })
319 :    
320 :     setGeneric("toPlainTextDocument", function(object, FUN, ...) standardGeneric("toPlainTextDocument"))
321 :     setMethod("toPlainTextDocument",
322 : feinerer 62 signature(object = "PlainTextDocument"),
323 : feinerer 49 function(object, FUN, ...) {
324 :     return(object)
325 :     })
326 :     setMethod("toPlainTextDocument",
327 : feinerer 62 signature(object = "XMLTextDocument", FUN = "function"),
328 : feinerer 49 function(object, FUN, ...) {
329 : feinerer 61 if (!Cached(object))
330 : feinerer 49 object <- loadFileIntoMem(object)
331 :    
332 : feinerer 56 corpus <- Corpus(object)
333 : feinerer 49
334 :     # As XMLDocument is no native S4 class, restore valid information
335 :     class(corpus) <- "XMLDocument"
336 :     names(corpus) <- c("doc","dtd")
337 :    
338 : feinerer 61 return(FUN(xmlRoot(corpus), ...))
339 : feinerer 49 })
340 :    
341 : feinerer 55 setGeneric("stemTextDocument", function(object, ...) standardGeneric("stemTextDocument"))
342 : feinerer 49 setMethod("stemTextDocument",
343 : feinerer 62 signature(object = "PlainTextDocument"),
344 : feinerer 61 function(object, ...) {
345 :     if (!Cached(object))
346 : feinerer 56 object <- loadFileIntoMem(object)
347 :    
348 : feinerer 49 require(Rstem)
349 :     splittedCorpus <- unlist(strsplit(object, " ", fixed = TRUE))
350 : feinerer 60 stemmedCorpus <- wordStem(splittedCorpus, ...)
351 : feinerer 56 Corpus(object) <- paste(stemmedCorpus, collapse = " ")
352 :     return(object)
353 : feinerer 49 })
354 :    
355 : feinerer 55 setGeneric("removeStopWords", function(object, stopwords, ...) standardGeneric("removeStopWords"))
356 : feinerer 53 setMethod("removeStopWords",
357 : feinerer 60 signature(object = "PlainTextDocument", stopwords = "character"),
358 : feinerer 61 function(object, stopwords, ...) {
359 :     if (!Cached(object))
360 : feinerer 56 object <- loadFileIntoMem(object)
361 :    
362 : feinerer 49 require(Rstem)
363 :     splittedCorpus <- unlist(strsplit(object, " ", fixed = TRUE))
364 :     noStopwordsCorpus <- splittedCorpus[!splittedCorpus %in% stopwords]
365 : feinerer 56 Corpus(object) <- paste(noStopwordsCorpus, collapse = " ")
366 :     return(object)
367 : feinerer 49 })
368 :    
369 : feinerer 64 setGeneric("tm_filter", function(object, ..., FUN = s_filter) standardGeneric("tm_filter"))
370 : feinerer 54 setMethod("tm_filter",
371 : feinerer 61 signature(object = "TextDocCol"),
372 : feinerer 64 function(object, ..., FUN = s_filter) {
373 : feinerer 61 object[tm_index(object, ..., FUN)]
374 :     })
375 :    
376 : feinerer 63 setGeneric("tm_index", function(object, ..., FUN = s_filter) standardGeneric("tm_index"))
377 : feinerer 61 setMethod("tm_index",
378 :     signature(object = "TextDocCol"),
379 : feinerer 64 function(object, ..., FUN = s_filter) {
380 : feinerer 57 sapply(object, FUN, ..., GlobalMetaData = GlobalMetaData(object))
381 : feinerer 49 })
382 :    
383 : feinerer 63 s_filter <- function(object, s, ..., GlobalMetaData) {
384 : feinerer 61 b <- TRUE
385 :     for (tag in names(s)) {
386 :     if (tag %in% names(LocalMetaData(object))) {
387 :     b <- b && any(grep(s[[tag]], LocalMetaData(object)[[tag]]))
388 :     } else if (tag %in% names(GlobalMetaData)){
389 :     b <- b && any(grep(s[[tag]], GlobalMetaData[[tag]]))
390 :     } else {
391 :     b <- b && any(grep(s[[tag]], eval(call(tag, object))))
392 :     }
393 :     }
394 :     return(b)
395 :     }
396 :    
397 : feinerer 63 setGeneric("fulltext_search_filter", function(object, pattern, ...) standardGeneric("fulltext_search_filter"))
398 :     setMethod("fulltext_search_filter",
399 : feinerer 61 signature(object = "PlainTextDocument", pattern = "character"),
400 :     function(object, pattern, ...) {
401 :     if (!Cached(object))
402 :     object <- loadFileIntoMem(object)
403 :    
404 :     return(any(grep(pattern, Corpus(object))))
405 :     })
406 :    
407 : feinerer 52 setGeneric("attachData", function(object, data) standardGeneric("attachData"))
408 :     setMethod("attachData",
409 : feinerer 62 signature(object = "TextDocCol", data = "TextDocument"),
410 : feinerer 52 function(object, data) {
411 :     data <- as(list(data), "TextDocCol")
412 :     object@.Data <- as(c(object@.Data, data), "TextDocCol")
413 :     return(object)
414 :     })
415 :    
416 :     setGeneric("attachMetaData", function(object, name, metadata) standardGeneric("attachMetaData"))
417 :     setMethod("attachMetaData",
418 : feinerer 62 signature(object = "TextDocCol"),
419 : feinerer 52 function(object, name, metadata) {
420 : feinerer 56 object@GlobalMetaData <- c(GlobalMetaData(object), new = list(metadata))
421 :     names(object@GlobalMetaData)[length(names(GlobalMetaData(object)))] <- name
422 : feinerer 52 return(object)
423 :     })
424 : feinerer 53
425 :     setGeneric("setSubscriptable", function(object, name) standardGeneric("setSubscriptable"))
426 :     setMethod("setSubscriptable",
427 : feinerer 62 signature(object = "TextDocCol"),
428 : feinerer 53 function(object, name) {
429 : feinerer 56 if (!is.character(GlobalMetaData(object)$subscriptable))
430 : feinerer 53 object <- attachMetaData(object, "subscriptable", name)
431 :     else
432 : feinerer 56 object@GlobalMetaData$subscriptable <- c(GlobalMetaData(object)$subscriptable, name)
433 : feinerer 53 return(object)
434 :     })
435 :    
436 :     setMethod("[",
437 :     signature(x = "TextDocCol", i = "ANY", j = "ANY", drop = "ANY"),
438 :     function(x, i, j, ... , drop) {
439 :     if(missing(i))
440 :     return(x)
441 :    
442 :     object <- x
443 :     object@.Data <- x@.Data[i, ..., drop = FALSE]
444 : feinerer 56 for (m in names(GlobalMetaData(object))) {
445 :     if (m %in% GlobalMetaData(object)$subscriptable) {
446 :     object@GlobalMetaData[[m]] <- GlobalMetaData(object)[[m]][i, ..., drop = FALSE]
447 : feinerer 53 }
448 :     }
449 :     return(object)
450 :     })
451 :    
452 : feinerer 63 setMethod("[<-",
453 :     signature(x = "TextDocCol", i = "ANY", j = "ANY", value = "ANY"),
454 :     function(x, i, j, ... , value) {
455 :     object <- x
456 :     object@.Data[i, ...] <- value
457 :     return(object)
458 :     })
459 :    
460 :     setMethod("[[",
461 :     signature(x = "TextDocCol", i = "ANY", j = "ANY"),
462 :     function(x, i, j, ...) {
463 :     return(x@.Data[[i, ...]])
464 :     })
465 :    
466 :     setMethod("[[<-",
467 :     signature(x = "TextDocCol", i = "ANY", j = "ANY", value = "ANY"),
468 :     function(x, i, j, ..., value) {
469 :     object <- x
470 :     object@.Data[[i, ...]] <- value
471 :     return(object)
472 :     })
473 :    
474 : feinerer 53 setMethod("c",
475 :     signature(x = "TextDocCol"),
476 :     function(x, ..., recursive = TRUE){
477 :     args <- list(...)
478 :     if(length(args) == 0)
479 :     return(x)
480 :     return(as(c(as(x, "list"), ...), "TextDocCol"))
481 :     })
482 : feinerer 54
483 :     setMethod("length",
484 :     signature(x = "TextDocCol"),
485 :     function(x){
486 :     return(length(as(x, "list")))
487 :     })
488 :    
489 :     setMethod("show",
490 :     signature(object = "TextDocCol"),
491 :     function(object){
492 :     cat("A text document collection with", length(object), "text document")
493 :     if (length(object) == 1)
494 :     cat("\n")
495 :     else
496 :     cat("s\n")
497 :     })
498 :    
499 :     setMethod("summary",
500 :     signature(object = "TextDocCol"),
501 :     function(object){
502 :     show(object)
503 :     if (length(GlobalMetaData(object)) > 0) {
504 :     cat("\nThe global metadata consists of", length(GlobalMetaData(object)), "tag-value pair")
505 :     if (length(GlobalMetaData(object)) == 1)
506 :     cat(".\n")
507 :     else
508 :     cat("s.\n")
509 :     cat("Available tags are:\n")
510 :     cat(names(GlobalMetaData(object)), "\n")
511 :     }
512 :     })
513 : feinerer 55
514 :     setGeneric("inspect", function(object) standardGeneric("inspect"))
515 :     setMethod("inspect",
516 :     c("TextDocCol"),
517 :     function(object) {
518 :     summary(object)
519 :     cat("\n")
520 :     show(as(object, "list"))
521 :     })

root@r-forge.r-project.org
ViewVC Help
Powered by ViewVC 1.0.0  
Thanks to:
Vienna University of Economics and Business Powered By FusionForge