Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 用循环填充矩阵的问题_R_Loops_For Loop_Matrix_Vector - Fatal编程技术网

R 用循环填充矩阵的问题

R 用循环填充矩阵的问题,r,loops,for-loop,matrix,vector,R,Loops,For Loop,Matrix,Vector,我正处于用R编写代码的第一步 我试图填充一个矩阵,它基于矩阵中的一些向量。 这是我的矩阵: OPEN NET_CONTRIBUTION RETURN CONTRIBUTION_RETURN SAVING_RETURN CLOSE [1,] 0 900 0.019 17.1 0 ? [2,] 917.1 900 -0.006 -5.4 0

我正处于用R编写代码的第一步

我试图填充一个矩阵,它基于矩阵中的一些向量。 这是我的矩阵:

 OPEN  NET_CONTRIBUTION RETURN CONTRIBUTION_RETURN SAVING_RETURN CLOSE
[1,] 0     900              0.019  17.1                0             ?    
[2,] 917.1 900              -0.006 -5.4                0             ?    
[3,] ?     900              0.004  3.6                 0             ?    
[4,] 903.6 900              0.004  3.6                 0             ?    
[5,] 903.6 900              0.002  1.8                 0             ?    
[6,] 901.8 900              0.002  1.8                 0             ?    
净贡献是一个具有常数的向量。 返回是一个随机值向量

  • 贡献\回报是对净贡献的计算* (1+返回)
  • 保存\返回应打开*(1+返回)
  • 关闭应为打开+净贡献+贡献回报+储蓄回报

  • 打开是上行的关闭值

所以我尝试了这个代码,但它不起作用

for (i in 1:444){
  Investment[i,5] <-  Investment[i,1]*(1+Investment[i,3]) #Saving Return
  Investment[i,6] <-  Investment[i,1] + Investment[i,2] + Investment[i,4] Investment[i,5] # CLOSE
  Investment[i+1,1] <-  (Investment[i,6]) # OPEN in the next row
}
for(1:444中的i){

投资[i,5]+投资[i,5]+投资[i,6]>投资[i+1,1]在计算收盘时,您只缺少一个
+
符号(
投资[i,6]

你应该

Investment[i,6] <-  Investment[i,1] + Investment[i,2] + Investment[i,4] + Investment[i,5]

Investment[i,6]在R中,我们有一个向量化的概念,它将你所做的一切应用于整个向量(或矩阵)。因此你真的不需要循环。大多数东西都比你想象的简单。例如:

NET_CONTRIBUTION = rep(900, 444)
RETURN = runif(444)
CONTRIBUTION_RETURN = NET_CONTRIBUTION * (1+RETURN)
那么,您可能不想使用矩阵来组合这些向量。data.frame似乎更合适。只需执行以下操作:

MyDataFrame = data.frame(NET_CONTRIBUTION, RETURN, CONTRIBUTION_RETURN)

您好,TomTr。请添加一个。这样您可以帮助他人帮助您!您提供的矩阵示例不容易使用。也就是说:在您的代码中,
Investment[i,6]虽然这可能是正确的,但这更多的是一种观点,并没有解决错误。谢谢。至于向量化的概念,我理解它,但尽管因为开放向量和闭合向量依赖于其他向量的结果,最好按照建议在矩阵或数据框中进行。
NET_CONTRIBUTION = rep(900, 444)
RETURN = runif(444)
CONTRIBUTION_RETURN = NET_CONTRIBUTION * (1+RETURN)
MyDataFrame = data.frame(NET_CONTRIBUTION, RETURN, CONTRIBUTION_RETURN)