You have a mistake in how you're setting up the object named "result"
before the loop.
You set result <- latentVariableNames. It is a vector of length 6,
when you call the function with LV. The printout from the first
iteration shows this.
But then you rbind result with a data frame that has three columns.
These are basically incompatible, but R (apparently silently) wraps
the vector of length 6 into two rows of three columns.
Here's an example:
foo <- letters[1:6]
names(foo) <- c('a','b','c')
foo
a b c <NA> <NA> <NA>
"a" "b" "c" "d" "e" "f"
rbind(foo, data.frame(a='X', b='Y', c='Z',stringsAsFactors=FALSE))
a b c
1 a b c
2 X Y Z
What I would do is something like this (untested):
loopCronbach <- function(latentVariableNames, groupingVariable) {
n <- length(latentVariableNames)
tmp1 <- tmp2 <- numeric(n)
for (i in 1:n) {
tmp1[i] <- calculateIndividualCronbach(get(latentVariableNames[i]))
tmp2[i] <- calculateGroupCronbach(get(latentVariableNames[i]),
groupingVariable)
}
result <-
data.frame(latentVariable=latentVariableNames,Indiv=tmp1,Group=tmp2)
names(result) <- c("latentVariable", "Indiv", "Group")
result ## no need to use return()
}
Building up a dataframe row by row using rbind() is in general an
expensive way to do things -- although in this instance it's such a
small dataframe that it doesn't matter.
-Don
At 10:56 AM +0100 2/11/10, Chaehan So wrote:
Ok, you're right - may I rephrase:
How should I modify the assignment of result <- latentVariableNames
so it produces the output without the first line?
I thought result <- NULL should do the job, but it didn't because of the
following names(result) assignment (which I understand, but not how I
can workaround it).
Here's the output and code again:
latentVariable Indiv Group
1 rPlanning rIterat rTDD
2 rPlanning 0.79 0.84
3 rIterat 0.79 0.83
4 rTDD 0.9 0.96
5 rStandup 0.83 0.82
6 rRetros 0.9 0.95
7 rAccess 0.91 0.92
8 rAccTest 0.87 0.9
#####
LV <- c("rPlanning", "rIterat", "rTDD", "rStandup", "rRetros", "rAccess",
"rAccTest")
#####
loopCronbach <- function(latentVariableNames, groupingVariable)
{
result <- latentVariableNames
names(result) <- c("latentVariable", "Indiv", "Group")
for (currentName in latentVariableNames)
{
print(currentName)
print(result)
tmp1 <- calculateIndividualCronbach(get(currentName))
tmp2 <- calculateGroupCronbach(get(currentName), groupingVariable)
result <- rbind(result,data.frame(latentVariable=currentName,
Indiv=tmp1,Group=tmp2))
}
return(result)
}
On Thu, Feb 11, 2010 at 3:31 AM, jim holtman <jholt...@gmail.com> wrote:
It doing exactly what you asked it to do. You have the assignment:
result <- latentVariableNames
and then you print it out in the loop. What were you expecting?
On Wed, Feb 10, 2010 at 9:06 PM, Chaehan So <chaehan...@gmail.com> wrote:
> > Dear r-helpers,
> >
> > why do I get an output in the first iteration of the for-loop
> > which contains the string values of the input vector,
> > and how can I avoid that?
>
> Here's the output (only line 1 is wrong)
>
> latentVariable Indiv Group
> 1 rPlanning rIterat rTDD
> 2 rPlanning 0.79 0.84
> 3 rIterat 0.79 0.83
> 4 rTDD 0.9 0.96
> 5 rStandup 0.83 0.82
> 6 rRetros 0.9 0.95
> 7 rAccess 0.91 0.92
> 8 rAccTest 0.87 0.9
>
> #####
> LV <- c("rPlanning", "rIterat", "rTDD", "rStandup", "rRetros", "rAccess",
> "rAccTest")
> #####
> loopCronbach <- function(latentVariableNames, groupingVariable)
> {
> result <- latentVariableNames
> names(result) <- c("latentVariable", "Indiv", "Group")
> for (currentName in latentVariableNames)
> {
> print(currentName)
> print(result)
> tmp1 <- calculateIndividualCronbach(get(currentName))
> > tmp2 <- calculateGroupCronbach(get(currentName), groupingVariable)
> result <- rbind(result,data.frame(latentVariable=currentName,
> Indiv=tmp1,Group=tmp2))
> }
> return(result)
> }
>
>
> a <- loopCronbach(LV, u_proj)
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help@r-project.org mailing list
> 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.
>
--
Jim Holtman
Cincinnati, OH
+1 513 646 9390
What is the problem that you are trying to solve?
--
Humboldt University Berlin, Germany
Institute of Psychology
Rudower Chaussee 18, Room 1221
12489 Berlin
Germany
Office: +49 30 2093 - 9337
Mobile: +49 171- 626 9373
[[alternative HTML version deleted]]
______________________________________________
R-help@r-project.org mailing list
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.
--
--------------------------------------
Don MacQueen
Environmental Protection Department
Lawrence Livermore National Laboratory
Livermore, CA, USA
925-423-1062
______________________________________________
R-help@r-project.org mailing list
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.