我已经看到很多接近这一点,但实际上没有解决我遇到的问题。所以我的问题是如何解决函数(如平均函数)中的向量值,以及如何将向量值放入标题中。我最近从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。
感谢您的见解!
答案 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(),强烈建议你阅读这些工作。
###### 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)