# #################################################
# Function for loading text files
# Usage: load.corpus(files = c("first.txt", "second.txt", ...))
# Required argument: vector containing file names
# Optional argument: a directory containing the corpus
# #################################################
load.corpus = function(files = "all", corpus.dir = "", encoding = "UTF-8") {
# first of all, retrieve the current path name
original.path = getwd()
# checking if the specified directory exists
if(is.character(corpus.dir) == TRUE & nchar(corpus.dir) > 0) {
# checking if the desired file exists and if it is a directory
if(file.exists(corpus.dir) == TRUE & file.info(corpus.dir)[2] == TRUE) {
# if yes, then set the new working directory
setwd(corpus.dir)
} else {
# otherwise, stop the script
stop("there is no directory ", getwd(), "/", corpus.dir)
}
} else {
# if the argument was empty, then relax
message("using current directory...\n")
}
# now, checking which files were requested; usually, the user is
# expected to specify a vector with samples' names
if(length(files) == 1 & files[1] == "all") {
files = list.files()
}
# variable initialization
loaded.corpus = vector("list", length = length(files))
names(loaded.corpus) = files
# uploading all files listed in the vector "files"
for (file in files) {
if(file.exists(file) == FALSE) {
message("!\n")
message("\"", file, "\"? no such a file -- check your directory!\n")
} else {
#message("loading ", file, "\t", "...")
# loading the next file from the list "corpus.filenames";
# if an error occurred, ignore it and send a message on the screen
# current.file = tryCatch(readChar(file, file.info(file)$size),
# error = function(e) NULL)
current.file = tryCatch(readLines(file, warn = FALSE, encoding = encoding),
error = function(e) NULL)
# if successful, append the scanned file into the corpus,
# otherwise send a message
if(length(current.file) > 0) {
loaded.corpus[[file]] = current.file
} else {
message("!\n")
message("the file ", file, " could not be loaded for an unknown reason\n")
}
}
}
setwd(original.path)
# assigning a class, if at least one text was successfully loaded
if( length(loaded.corpus) > 0) {
class(loaded.corpus) = "stylo.corpus"
# adding some information about the current function call
# to the final list of results
attr(loaded.corpus, "call") = match.call()
} else {
loaded.corpus = NULL
}
# returning the value
return(loaded.corpus)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.