R for循环填充新变量

时间:2016-04-21 20:49:57

标签: r for-loop

亲爱的Stackoverflow社区,

我对我的for循环感到茫然,我很确定这是一个小问题。我确实浏览了已经被问过的循环问题......

这是我到目前为止所做的:

xvals <- as.matrix(seq(1,10, 1))

我想基于椭圆创建椭圆

yvals <- for (i in 1:nrow(xvals)){
  p <- 2.69/(1+2.69)
  if (i == 1){
    yvals[i,] <- round(p, 2)}
  else {
    yvals[i,] <- round(1-(p)^i, 2)}
}

不幸的是,这件事不断抛出错误

Error in 1:nrow(xvals) : argument of length 0

当我将xvals更改为矩阵时,我得到一个不同的错误:

Error in yvals[i, ] <- round(p, 2) : 
  incorrect number of subscripts on matrix

3 个答案:

答案 0 :(得分:2)

没有循环

xvals <- 1:10
p <- 2.69/(1+2.69)
yvals <- 1-p^xvals
yvals[1] <- p
yvals <- round(yvals, 2)

答案 1 :(得分:0)

你真的想要一个矩阵或者一个向量吗?

yvals <- replicate(10,0)

p <- 2.69/(1+2.69)
for (i in 1:length(yvals)){
  if (i == 1){
    yvals[i] <- round(p, 2)
}
  else {
    yvals[i] <- round(1-(p)^i, 2)}
}

xvals <- 1:10

plot(xvals, yvals)

enter image description here

答案 2 :(得分:0)

我认为你应该首先创建空矩阵以实现循环工作。试试这个,也许它可以帮到你

xvals <- as.matrix(seq(1,10, 1))
xvals

yvals <- matrix(0, nrow=nrow(xvals),ncol=ncol(xvals))
yvals
for (i in 1:nrow(xvals)){
p <- 2.69/(1+2.69)
  if (i == 1){
    yvals[i,] <- round(p, 2)}
  else {
    yvals[i,] <- round(1-(p)^i, 2)}
}
yvals
相关问题