String Substitution in R
#! /usr/opt/local/bin/R
# manual way to open files
f606 <-spss.get("~/school/census1/f606/f606ind.por", use.value.labels = TRUE) #2006
f607 <-spss.get("~/school/census1/f607/f607ind.por", use.value.labels = TRUE) #2007
f608 <-spss.get("~/school/census1/f608/f608ind.por", use.value.labels = TRUE) #2008
f609 <-spss.get("~/school/census1/f609/f609ind.por", use.value.labels = TRUE) #2009
# attempts to automate
dates <- 606:609
for (file in dates){print(paste("f",file))}
[1] "f 606"
[1] "f 607"
[1] "f 608"
[1] "f 609"
sprintf("f%s <-spss.get(\"~/dir/f%s/f%sind.por\", use.value.labels = TRUE)", dates[1], dates[1], dates[1])
[1]"f606 <-spss.get(\"~/dir/f606/f606ind.por\", use.value.labels = TRUE)"
# now to make that a command instead of a string
# then to loop
Say something. Document the code here. What is this post saying? I felt like in Ruby I could loop through some files and open them quite easily.
#! /usr/bin/bash
cd ~/scratch
touch 1.por
touch 2.por
touch 3.por
After creating the files we attempt to open them.
for i in 1..3
puts "f#{i} <- /dir/#{i}.txt"
end
f1 <- /dir/1.txt
f2 <- /dir/2.txt
f3 <- /dir/3.txt
##
for i in 1..3
File.open "#{i}.por"
end
Back to Bash.
~ git:(master) cd scratch
scratch git:(master) mkdir f1
scratch git:(master) mkdir f2
scratch git:(master) mkdir f3
scratch git:(master) mkdir dir
scratch git:(master) mv f1 dir/f1
scratch git:(master) mv f2 dir/f2
scratch git:(master) mv f3 dir/f3
scratch git:(master) mv 1.por dir/f1/1.por
scratch git:(master) mv 2.por dir/f2/2.por
scratch git:(master) mv 3.por dir/f3/3.por
Back to Ruby.
Dir.glob("*.por")
# => ["1.por", "2.por", "3.por"]
for i in 1..3 do
index_val = " I have #{i}"
instance_variable_set("@dataset#{i}", index_val)
@dataset#{i} = file.open "#{i}.por"
end
Dir.glob("**/*/*.por")
# => ["dir/f1/1.por", "dir/f2/2.por", "dir/f3/3.por"]
for i in 1..3 do
index_val = " I have #{i}"
instance_variable_set("@dataset#{i}", index_val)
@dataset#{i} = file.open "/dir/f#{i}/#{i}.por"
end
OK, that was actually much harder than I remembered ruby for loops being. Will I need such an instance variables trick to increment over var names in R as well? Maybe my time would have been better spent looking for the get() function that was suggested on g+.