adding elements to a vector in R
I'm trying to create a function that simulate dolling m dice, n times, calculate the minimum of the outcome of the dice in each roll and then calculate the mean of the minimum and store the values into a vector.
mindice = function(n = 10, m = 3)
v <- vector
for(i in 1:10)
minima= numeric(n)
for(i in 1:n)
minima[i] = min(sample(6,m,replace=T))
v[i] = mean(minima)
v
I'm calling the function like that: mindice()
and the output is: Error in v[i] <- mean(minima) : object of type 'closure' is not subsettable
any help will be appreciated
r
add a comment |
I'm trying to create a function that simulate dolling m dice, n times, calculate the minimum of the outcome of the dice in each roll and then calculate the mean of the minimum and store the values into a vector.
mindice = function(n = 10, m = 3)
v <- vector
for(i in 1:10)
minima= numeric(n)
for(i in 1:n)
minima[i] = min(sample(6,m,replace=T))
v[i] = mean(minima)
v
I'm calling the function like that: mindice()
and the output is: Error in v[i] <- mean(minima) : object of type 'closure' is not subsettable
any help will be appreciated
r
2
Tryv <- vector()
. The use of()
invokes the function. Providing the function name alone makesv
a copy of the function itself.
– jdobres
Nov 15 '18 at 13:29
I think you probably wantfor (i in 1:n)
, not1:10
.
– Gregor
Nov 15 '18 at 14:09
Also, I just want to clarify: your code seems to be calculating the cumulative mean of the minima - is that what you want? Or do you just want to overall mean?
– Gregor
Nov 15 '18 at 14:31
stackoverflow.com/questions/45866523/… :-)
– Oliver Humphreys
Nov 15 '18 at 15:01
add a comment |
I'm trying to create a function that simulate dolling m dice, n times, calculate the minimum of the outcome of the dice in each roll and then calculate the mean of the minimum and store the values into a vector.
mindice = function(n = 10, m = 3)
v <- vector
for(i in 1:10)
minima= numeric(n)
for(i in 1:n)
minima[i] = min(sample(6,m,replace=T))
v[i] = mean(minima)
v
I'm calling the function like that: mindice()
and the output is: Error in v[i] <- mean(minima) : object of type 'closure' is not subsettable
any help will be appreciated
r
I'm trying to create a function that simulate dolling m dice, n times, calculate the minimum of the outcome of the dice in each roll and then calculate the mean of the minimum and store the values into a vector.
mindice = function(n = 10, m = 3)
v <- vector
for(i in 1:10)
minima= numeric(n)
for(i in 1:n)
minima[i] = min(sample(6,m,replace=T))
v[i] = mean(minima)
v
I'm calling the function like that: mindice()
and the output is: Error in v[i] <- mean(minima) : object of type 'closure' is not subsettable
any help will be appreciated
r
r
asked Nov 15 '18 at 13:24
Umar Sheikh SalemUmar Sheikh Salem
73
73
2
Tryv <- vector()
. The use of()
invokes the function. Providing the function name alone makesv
a copy of the function itself.
– jdobres
Nov 15 '18 at 13:29
I think you probably wantfor (i in 1:n)
, not1:10
.
– Gregor
Nov 15 '18 at 14:09
Also, I just want to clarify: your code seems to be calculating the cumulative mean of the minima - is that what you want? Or do you just want to overall mean?
– Gregor
Nov 15 '18 at 14:31
stackoverflow.com/questions/45866523/… :-)
– Oliver Humphreys
Nov 15 '18 at 15:01
add a comment |
2
Tryv <- vector()
. The use of()
invokes the function. Providing the function name alone makesv
a copy of the function itself.
– jdobres
Nov 15 '18 at 13:29
I think you probably wantfor (i in 1:n)
, not1:10
.
– Gregor
Nov 15 '18 at 14:09
Also, I just want to clarify: your code seems to be calculating the cumulative mean of the minima - is that what you want? Or do you just want to overall mean?
– Gregor
Nov 15 '18 at 14:31
stackoverflow.com/questions/45866523/… :-)
– Oliver Humphreys
Nov 15 '18 at 15:01
2
2
Try
v <- vector()
. The use of ()
invokes the function. Providing the function name alone makes v
a copy of the function itself.– jdobres
Nov 15 '18 at 13:29
Try
v <- vector()
. The use of ()
invokes the function. Providing the function name alone makes v
a copy of the function itself.– jdobres
Nov 15 '18 at 13:29
I think you probably want
for (i in 1:n)
, not 1:10
.– Gregor
Nov 15 '18 at 14:09
I think you probably want
for (i in 1:n)
, not 1:10
.– Gregor
Nov 15 '18 at 14:09
Also, I just want to clarify: your code seems to be calculating the cumulative mean of the minima - is that what you want? Or do you just want to overall mean?
– Gregor
Nov 15 '18 at 14:31
Also, I just want to clarify: your code seems to be calculating the cumulative mean of the minima - is that what you want? Or do you just want to overall mean?
– Gregor
Nov 15 '18 at 14:31
stackoverflow.com/questions/45866523/… :-)
– Oliver Humphreys
Nov 15 '18 at 15:01
stackoverflow.com/questions/45866523/… :-)
– Oliver Humphreys
Nov 15 '18 at 15:01
add a comment |
2 Answers
2
active
oldest
votes
I don't know if this fits your expectations. This function returns both the vector for the minimum per roll and their average
mindice <- function(n = 10, m = 3)
minima <- vector("numeric")
for(i in 1:n)
minima = c(minima, min(sample(6,m,replace=T)))
list(minimum_values=minima,
mean_minima=mean(minima))
mindice()
add a comment |
The comment about using v = vector()
rather than v = vector
should solve the bug in the way you've written the function. If you're interested in a more R-like way to do this function, try this:
mindice2 = function(n = 10, m = 3)
rolls = sample(6, size = m * n, replace = TRUE)
rolls = matrix(rolls, nrow = m)
minima = apply(rolls, MARGIN = 2, FUN = min)
cum_mean = cumsum(minima) / seq_along(minima)
return(cum_mean)
Rather than sampling each roll separately, we do all the rolls at once (more efficient), and then put them in a matrix where each column is a roll of m
dice. We can then use apply
to find the minima, and cumsum
to calculate the mean minimum after each roll.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53320494%2fadding-elements-to-a-vector-in-r%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
I don't know if this fits your expectations. This function returns both the vector for the minimum per roll and their average
mindice <- function(n = 10, m = 3)
minima <- vector("numeric")
for(i in 1:n)
minima = c(minima, min(sample(6,m,replace=T)))
list(minimum_values=minima,
mean_minima=mean(minima))
mindice()
add a comment |
I don't know if this fits your expectations. This function returns both the vector for the minimum per roll and their average
mindice <- function(n = 10, m = 3)
minima <- vector("numeric")
for(i in 1:n)
minima = c(minima, min(sample(6,m,replace=T)))
list(minimum_values=minima,
mean_minima=mean(minima))
mindice()
add a comment |
I don't know if this fits your expectations. This function returns both the vector for the minimum per roll and their average
mindice <- function(n = 10, m = 3)
minima <- vector("numeric")
for(i in 1:n)
minima = c(minima, min(sample(6,m,replace=T)))
list(minimum_values=minima,
mean_minima=mean(minima))
mindice()
I don't know if this fits your expectations. This function returns both the vector for the minimum per roll and their average
mindice <- function(n = 10, m = 3)
minima <- vector("numeric")
for(i in 1:n)
minima = c(minima, min(sample(6,m,replace=T)))
list(minimum_values=minima,
mean_minima=mean(minima))
mindice()
answered Nov 15 '18 at 13:53
paoloeusebipaoloeusebi
641414
641414
add a comment |
add a comment |
The comment about using v = vector()
rather than v = vector
should solve the bug in the way you've written the function. If you're interested in a more R-like way to do this function, try this:
mindice2 = function(n = 10, m = 3)
rolls = sample(6, size = m * n, replace = TRUE)
rolls = matrix(rolls, nrow = m)
minima = apply(rolls, MARGIN = 2, FUN = min)
cum_mean = cumsum(minima) / seq_along(minima)
return(cum_mean)
Rather than sampling each roll separately, we do all the rolls at once (more efficient), and then put them in a matrix where each column is a roll of m
dice. We can then use apply
to find the minima, and cumsum
to calculate the mean minimum after each roll.
add a comment |
The comment about using v = vector()
rather than v = vector
should solve the bug in the way you've written the function. If you're interested in a more R-like way to do this function, try this:
mindice2 = function(n = 10, m = 3)
rolls = sample(6, size = m * n, replace = TRUE)
rolls = matrix(rolls, nrow = m)
minima = apply(rolls, MARGIN = 2, FUN = min)
cum_mean = cumsum(minima) / seq_along(minima)
return(cum_mean)
Rather than sampling each roll separately, we do all the rolls at once (more efficient), and then put them in a matrix where each column is a roll of m
dice. We can then use apply
to find the minima, and cumsum
to calculate the mean minimum after each roll.
add a comment |
The comment about using v = vector()
rather than v = vector
should solve the bug in the way you've written the function. If you're interested in a more R-like way to do this function, try this:
mindice2 = function(n = 10, m = 3)
rolls = sample(6, size = m * n, replace = TRUE)
rolls = matrix(rolls, nrow = m)
minima = apply(rolls, MARGIN = 2, FUN = min)
cum_mean = cumsum(minima) / seq_along(minima)
return(cum_mean)
Rather than sampling each roll separately, we do all the rolls at once (more efficient), and then put them in a matrix where each column is a roll of m
dice. We can then use apply
to find the minima, and cumsum
to calculate the mean minimum after each roll.
The comment about using v = vector()
rather than v = vector
should solve the bug in the way you've written the function. If you're interested in a more R-like way to do this function, try this:
mindice2 = function(n = 10, m = 3)
rolls = sample(6, size = m * n, replace = TRUE)
rolls = matrix(rolls, nrow = m)
minima = apply(rolls, MARGIN = 2, FUN = min)
cum_mean = cumsum(minima) / seq_along(minima)
return(cum_mean)
Rather than sampling each roll separately, we do all the rolls at once (more efficient), and then put them in a matrix where each column is a roll of m
dice. We can then use apply
to find the minima, and cumsum
to calculate the mean minimum after each roll.
answered Nov 15 '18 at 14:37
GregorGregor
66.8k1092176
66.8k1092176
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53320494%2fadding-elements-to-a-vector-in-r%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
2
Try
v <- vector()
. The use of()
invokes the function. Providing the function name alone makesv
a copy of the function itself.– jdobres
Nov 15 '18 at 13:29
I think you probably want
for (i in 1:n)
, not1:10
.– Gregor
Nov 15 '18 at 14:09
Also, I just want to clarify: your code seems to be calculating the cumulative mean of the minima - is that what you want? Or do you just want to overall mean?
– Gregor
Nov 15 '18 at 14:31
stackoverflow.com/questions/45866523/… :-)
– Oliver Humphreys
Nov 15 '18 at 15:01