有没有办法压缩像这样的代码?在这种情况下,B只是一个列向量,A只是一个标量值。我觉得好像Q1< - A *(1 + B [1])这样的行必须保持这样,然后其余的代码可能会以更清洁的方式编写。
Q1 <- A*(1+B[1])
Q2 <- Q1*(1+B[2])
Q3 <- Q2*(1+B[3])
Q4 <- Q3*(1+B[4])
Q5 <- Q4*(1+B[5])
QCombo <- matrix(c(Q1,Q2,Q3,Q4,Q5))
非常感谢任何帮助。期望的结果将是列向量。
答案 0 :(得分:3)
您可以尝试cumprod
(使用@ MrFlick&#39;示例)
A*cumprod(B+1)
#[1] 20 60 240 1200 7200
答案 1 :(得分:2)
假设您的A和B看起来像这样
Private Sub lstExample_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim wb As Workbook
Dim I As Integer
Dim ID As String
Dim findValue As Range
Set wb = ThisWorkbook
'Get the values of the selected row in listbox on doubleclick
For I = 0 To lstExample.ListCount - 1
If lstExample.Selected(I) = True Then
'Set listbox column 1 as ID value to find
ID = lstExample.List(I, 1)
End If
Next I
'Match ID (column A) on Sheet1
Set findValue = wb.Sheets(1).Range("A:A").Find(What:=ID, LookIn:=xlValues)
MsgBox findValue
End Sub
这看起来很好用A <- 10
B <- 1:5
函数
Reduce
我们使用Reduce(function(a,b) a*(1+b), B, init=A, accumulate=T)[-1]
# [1] 20 60 240 1200 7200
修剪初始[-1]
值。如果你真的需要,可以将它们包裹在A
电话中。