在R

时间:2015-07-07 19:34:56

标签: r function for-loop

我已经看到很多接近这一点,但实际上没有解决我遇到的问题。所以我的问题是如何解决函数(如平均函数)中的向量值,以及如何将向量值放入标题中。我最近从SAS切换到R所以我有点困惑。

###### parameters #####
nphase1=50
nphase2=1000
varcount=5
meanshift= 0
sigmashift= 1


##### phase1 dataset/ control limits #####

for (i in 1:varcount)
{
  assign (paste("x",i, sep=""), (rnorm(nphase1,0,1)))
  mean_var[i]=mean(x[i])
  std_var[i]=sd(x[i])
  Upper_SPC_Limit_Method1_var[i]= mean_var[i] + (3 * std_var[i])
  Lower_SPC_Limit_Method1_var[i]= mean_var[i] - (3 * std_var[i])
  moving_range_var[i]= abs(diff(x[i]))
  MR_mean[i]= mean(moving_range_var[i])
  Upper_SPC_Limit_Method2_var[i] =mean_var[i] + (3 * MR_mean[i])
  Lower_SPC_Limit_Method2_var[i] =mean_var[i] - (3 * MR_mean[i])
}

我确信我必须做类似的事情(分配(粘贴(“x”,i,sep =“”)来标记个别限制,但我不能达到那个步骤而不能计算for循环中每个变量的平均值。 我想要做的是创建5个变量,每个变量有50个观察值(正常随机dist)。我想采取的意思是&使用这些数字构造控制限制的每个变量的sd。

感谢您的见解!

2 个答案:

答案 0 :(得分:1)

您的变量未命名为$(function(){ var x=Math.floor(size * Math.random()); $('#home-intro').css('backgroundImage', '../images/' + x + '.png'); }); x[1]等。它们将是x[2]x1,依此类推。您应该创建一个列表,如果这是您想要做的,即x2,但您的代码仍然效率低下。你应该研究它的向量化,使x[[i]] <- rnorm(nphase1, 0, 1)成为矩阵等等。

答案 1 :(得分:1)

我相信下面的代码可以满足您的需求。我使用matrix(),with()和apply(),强烈建议你阅读这些工作。

Apply() Tutorial

With() Primer

###### parameters #####
nphase1=50
nphase2=1000
varcount=5
meanshift= 0
sigmashift= 1


##### phase1 dataset/ control limits #####

x <- matrix(rnorm(nphase1*varcount, 0, 1), nrow = nphase1, ncol = varcount)
mean_var <- apply(x, 2, mean)
std_var <- apply(x, 2, sd)
df_var <- data.frame(mean_var, std_var)
Upper_SPC_Limit_Method1_var <- with(df_var, mean_var + 3 * std_var)
Lower_SPC_Limit_Method1_var <- with(df_var, mean_var - 3 * std_var)
moving_range_var <- apply(x, 2, function(z) abs(diff(z)))
MR_mean <- apply(moving_range_var, 2, mean)
Upper_SPC_Limit_Method2_var <- with(df_var, mean_var + 3 * MR_mean)
Lower_SPC_Limit_Method2_var <- with(df_var, mean_var - 3 * std_var)