繁体   English   中英

循环并保存不同长度的循环输出[重复]

Iterate and save loop outputs of different lengths [duplicate]

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

该问题与以下内容完全相同:

看似基本的问题,但我已经搜索并尝试了几个选项,但无法显示输出。 我非常感谢以下帮助:

我有一列返回值(在下面是dput),我将它们复合在一个循环中,从每个元素一直到结束。 我想将输出保存在“结果”中,并预先对其进行了初始化。 我尝试了几种将输出转换为结果的方法,如下所示,但没有一种成功。 但是,我通过print(temp)看到计算正在按我的意愿进行。

但是,每次迭代都会产生不同长度的答案,我希望每个迭代都在自己的行中(这就是为什么我在向量中留出了更多NA的空间的原因)。 使用当前方法:results = resultstemp不成功,因为除第一个迭代外,所有“额外”列都填充了结果开始的重复。 因此,例如,倒数第二行具有相同的两个数字(仅对两个收益进行复合的完整结果)在整行中重复12次。

    #results=NULL
    results=matrix(data=NA,nrow=nrow(returns),ncol=nrow(returns))
    for (i in 1:nrow(returns)) {
      temp=cumprod(1+returns[i:nrow(returns),]/100)-1
      #resultstemp=append(results,temp)
      #resultstemp[i,]=temp
      resultstemp=rbind(results,temp)
      #print(resultstemp)
      print(temp)
      results=resultstemp
      #resultstemp[i,]=temp
      #results[i,]=resultstemp
      #results[i]=resultstemp[i]
      #results[i]=temp[i]
    }

返回值:

structure(list(`runif(24, 0, 10)` = c(7.60884596500546, 4.31712970370427, 
1.7181678651832, 4.86275367671624, 8.06177110411227, 8.07952171890065, 
7.45263583026826, 9.86292108893394, 4.06634262995794, 2.36454397207126, 
9.12716506049037, 3.72667369898409, 1.2204843852669, 7.80610600719228, 
0.640116988215595, 6.94793848553672, 1.73743493855, 2.57189674302936, 
4.7653386532329, 1.79362375289202, 7.56623527035117, 2.70907687023282, 
4.45359382545575, 5.50409059040248)), .Names = "runif(24, 0, 10)", row.names = c(NA, 
-24L), class = "data.frame")
1 个回复

如果我对您的理解正确,那么您将需要一个较低的三角矩阵,其中第一列只是第一百分比,第二列是第一百分比与第二百分比的乘积,依此类推。等等,在每一行中,您又走了一个周期? 如果是这样,我认为以下将为您工作:

CMPND <- function(X){
  n <- length(X)
  OUTPUT <- matrix(NA, nrow = n, ncol = n)
  for (i in seq_len(n)){
    OUTPUT[i, 1] = X[1] / 100
    for (j in seq_len(i - 1) + 1) {
      OUTPUT[i, j] = ((1 + OUTPUT[i, j - 1]) * (1 + X[j] / 100)) - 1
    }
  }
  return(OUTPUT)
}

使用数据的时间很长,但是给定5个10%的回报序列,您将得到类似以下内容的结果:

> CMPND(rep(.1, 5))
      [,1]     [,2]        [,3]        [,4]       [,5]
[1,] 0.001       NA          NA          NA         NA
[2,] 0.001 0.002001          NA          NA         NA
[3,] 0.001 0.002001 0.003003001          NA         NA
[4,] 0.001 0.002001 0.003003001 0.004006004         NA
[5,] 0.001 0.002001 0.003003001 0.004006004 0.00501001

我敢肯定,您可以使用备忘录来提高效率。

1 对齐不同长度的输出

我最近看到了一篇有关如何对齐输出的文章( Python:格式化输出字符串,右对齐 )。 关于该页面上答案的问题是,没有一个答案回答了我的问题。 是的,它教我如何对齐单个输出,但不对齐其他长度的输出。 这是一个示例代码,向您展示我的意思: 我试图将'{:&gt;5}'重新排列为其他各 ...

3 迭代两个不同长度的向量

我有两个可以有不同长度的Vec ,例如: 我想成对地迭代它们,打印: 我可以使用Iterator::zip来获取xs和ys匹配元素的对: 但对于“无匹配”位,我需要复杂的代码来检查长度并完成其余部分。 我想要一个完全基于迭代器的解决方案,所以我试过: 这是行 ...

2016-07-02 19:20:06 2 514   rust
6 使用ldply处理不同长度的输出

只是一个简短的问题,关于如何使用plyr软件包中的ldply处理不同长度的输出。 这是我正在使用的代码的简单版本以及出现的错误: 这里的错误是由于某些模型将包含NA值而导致的: 因此,以下输出将不会具有相同的长度; 例如: 但对于另一个我得到 有简单的解决方法 ...

2012-11-09 19:37:12 2 1265   r/ plyr
7 具有2个不同长度的数组? [重复]

这个问题已经在这里有了答案: console.log()异步还是同步? 2个答案 我使用以下方法创建了一个数组: 如果我做: 我得到:2。 但是,如果我这样做: 我得到一个看起来像这样的对象: [a.elm-skip-link, ...

8 将循环输出保存到变量中

我有以下清单 列表的大小是动态的。 它取决于ssh_conn.rec的输出。 我需要获取这些值并为列表中的每个值运行以下命令 我有可以使用循环的填充,但是我不确定在代码下面如何做: 产量 谢谢 ...

2017-10-27 14:49:30 1 424   python
9 同时遍历三个具有不同长度的列表

因此,我尝试在python 3中使用zip和itertools循环同时迭代3个以上的列表,但它给了我一些我不想要的东西。 假设我有 我已经试过了: 我的输出是: 等等... 我期望输出: 我尝试过不使用itertools循环,使用itertools.izi ...

2019-04-18 18:37:46 1 60   python
10 如何遍历具有不同长度的字符串列表?

假设我有 lists = ["ABC","AC","CCCC","BC"] 我想要一个新列表,其中新列表中的项目将基于列表按位置分组,这意味着lists中的每个字符串都将位置0(“ ABC”位置0为“ A”)并从中制成字符串。 position = ["AACB","BCCC", ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM