Dear community,
I have a little problem filling in a vector with loop output.
I think the problem is the following: I am caluclating the index which
indicates where the loop output should be placed at by a formula. But when I
want to fill in or read out some specific index places this doesn't work
properly. Let me show you my code:
# CODE
################
ln_0 <- 0
ln_max <- 20
ln_schritt <- 0.1
l_frak_0 <- 25
g_l_frak_0 <- 0.5
ln_auslastung <- 2
l_frak <- rep(0, 1+(ln_max-ln_0)/ln_schritt)
ln <- ln_0
while (ln < (ln_max+ln_schritt))
{
insert <- 1+ (ln-ln_0)/ln_schritt
l_frak[insert] <- 100
#l_frak_0 / g_l_frak_0 + floor(ln/ln_auslastung) * l_frak_0/g_l_frak_0 *
(1-g_l_frak_0) - l_frak_0 * (1-g_l_frak_0) * ln
# for simplification I replace the real formula by 100
ln <- ln + ln_schritt
}
names(l_frak) <- seq(ln_0, ln_max, ln_schritt)
#names(l_frak) <- c(1:length(l_frak))
l_frak[which(l_frak[]==0)]
# 0.7 1.2 18.9
# 0 0 0
# The places in the vector where the filling in doesn't work:
# 8 13 190
# Now try the following:
#################
ln <- 0.7
insert <- 1+ (ln-ln_0)/ln_schritt
insert
# [1] 8
# BUT:
l_frak[insert]
# 0.6
# 10
# But it should yield
l_frak[8]
# 0.7
# 0
#########
# END CODE
When I change the mode of the variable "insert" to numeric this doesn't
change anything. When I change it to
as.numeric(as.character(1+ (ln-ln_0)/ln_schritt))
Then the place where the filling in doesn't work is at
9.9 or at the 100th
place of the vector.
Is this a bug??
Thank you for your help,
Daniel
--
View this message in context: http://r.789695.n4.nabble.com/Problem-when-index-is-given-by-a-changing-formula-in-loop-BUG-tp4630492.html
Sent from the R help mailing list archive at Nabble.com.
Problem when index is given by a changing formula in loop - BUG??
2 messages · greatest.possible.newbie, R. Michael Weylandt
No it's not a bug in R. Indexing can only occur by integers so there's an automatic conversion to integer inside of `[`. Your "insert" variable is actually slightly less than 8 (note as.integer(insert) == 7) by some amount that's too small to print, but the computer still picks up on. More concretely: x <- 1:10 x[2] x[3] x[2.2] x[2.8] x[2.999999] x[insert] x[as.integer(insert)] x[round(insert)] Hopefully that helps clear things up, Michael On Fri, May 18, 2012 at 7:50 AM, greatest.possible.newbie
<daniel.hoop at gmx.net> wrote:
Dear community,
I have a little problem filling in a vector with loop output.
I think the problem is the following: I am caluclating the index which
indicates where the loop output should be placed at by a formula. But when I
want to fill in or read out some specific index places this doesn't work
properly. Let me show you my code:
# CODE
################
ln_0 <- 0
ln_max <- 20
ln_schritt <- 0.1
l_frak_0 <- 25
g_l_frak_0 <- 0.5
ln_auslastung <- 2
l_frak <- rep(0, 1+(ln_max-ln_0)/ln_schritt)
ln <- ln_0
while (ln < (ln_max+ln_schritt))
{
?insert <- 1+ (ln-ln_0)/ln_schritt
?l_frak[insert] <- ?100
#l_frak_0 / g_l_frak_0 + floor(ln/ln_auslastung) * l_frak_0/g_l_frak_0 *
(1-g_l_frak_0) ?- ?l_frak_0 * (1-g_l_frak_0) * ln
# for simplification I replace the real formula by 100
?ln <- ln + ln_schritt
}
names(l_frak) <- seq(ln_0, ln_max, ln_schritt)
#names(l_frak) <- c(1:length(l_frak))
l_frak[which(l_frak[]==0)]
# 0.7 ?1.2 18.9
# ?0 ? ?0 ? ?0
# The places in the vector where the filling in doesn't work:
# 8 ? 13 ? 190
# Now try the following:
#################
ln <- 0.7
insert <- 1+ (ln-ln_0)/ln_schritt
insert
# [1] 8
# BUT:
l_frak[insert]
# 0.6
# ?10
# But it should yield
l_frak[8]
# 0.7
# ? 0
#########
# END CODE
When I change the mode of the variable "insert" to numeric this doesn't
change anything. When I change it to
as.numeric(as.character(1+ (ln-ln_0)/ln_schritt))
Then the place where the filling in doesn't work is at
9.9 or at the 100th
place of the vector.
Is this a bug??
Thank you for your help,
Daniel
--
View this message in context: http://r.789695.n4.nabble.com/Problem-when-index-is-given-by-a-changing-formula-in-loop-BUG-tp4630492.html
Sent from the R help mailing list archive at Nabble.com.
______________________________________________ R-help at 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.