[R] Using get() or similar function to access more than one element in a vector
Joseph Sorell
josephsorell at gmail.com
Sun Aug 14 06:34:13 CEST 2011
Dear R-users,
I've written a script that produces a frequency table for a group of
texts. The table has a total frequency for each word type and
individual frequency counts for each of the files. (I have not
included the code for creating the column headers.) Below is a sample:
Word Total 01.txt 02.txt 03.txt 04.txt 05.txt
the 22442 2667 3651 1579 2132 3097
I 18377 3407 454 824 449 3746
and 15521 2377 2174 891 1006 2450
to 13598 1716 1395 905 1021 1983
of 12834 1647 1557 941 1127 1887
it 12440 2160 916 497 493 2449
you 12036 2283 356 293 106 2435
I've encountered two problems when I try to construct and save the file.
The "combined.sorted.freq.list" is a named integer vector in which the
integers are the total frequency counts for each word. The names are
the words. For each of the individual lists I've created frequency
lists that are sorted in the order of the combined list. (NAs have
been replaced with "0"). These are called "combined." plus the number
of the file.
If I were to write the line to save the file manually, it would look like this:
combined.table<-paste(names(combined.sorted.freq.list),
combined.sorted.freq.list, combined.01, combined.02, combined.03,
combined.04, combined.05, combined.06, combined.07, combined.08,
combined.09, combined.10, combined.11, combined.12, sep="\t")
#creates a table with columns for the combined and all of the
component lists
However, each time I run the script, there may be a differing number
of text files. I created a list of the individual frequency counts
called "combined.file.list"
combined.file.count<-1:length(selected.files) #counts number of files
originally selected
combined.file.list<-paste("combined", combined.file.count, sep=".")
#creates the file names for the combined lists by catenating
"combined" with each file number separated by a period by recycled the
string "combined for each number
I then tried to include it as one of the elements to be pasted by using get().
combined.table<-paste(names(combined.sorted.freq.list),
combined.sorted.freq.list, get(combined.file.list[]), sep="\t")
#intended to create a table with columns for the combined and all of
the component lists
Unfortunately, the get() function only gets the first component list
since get() can apparently only access one object.
This results in a table with only the total frequency and the amount
of the first text:
Word Total 01.txt
the 22442 2667
I 18377 3407
and 15521 2377
to 13598 1716
of 12834 1647
it 12440 2160
you 12036 2283
If I try to construct the file "piece by piece" as they are created, I
get an error message that a vector of more than 1.3 Gb cannot be
created. Does anyone know how I could use get() or some other method
to access all of the files named in a vector?
Many thank for any help you can offer!
Joseph
More information about the R-help
mailing list