R将列表列表与向量相乘

时间:2016-04-06 05:07:59

标签: r vector dataframe multiplication

我有一个包含1列的数据框,其中包含10个列表,每个列表都包含不同数量的元素。我还有一个包含10个不同值的向量(10个整数)。

我想采取" sumproduct"每个10个列表及其相应的向量值,最终得到10个值。

Value 1 = sumproduct(First list, First vector value)
Value 2 = sumproduct(Second list, Second vector value)
etc...

Final_Answer <- c(Value 1, Value 2, ... , Value 10)

我有一个函数可以生成包含表示年份的数字列表的数据框。使用循环构造数据帧以生成每个值,然后将值与数据帧一起进行行绑定。

Time_Function <- function(Maturity)
{for (i in 0:Count) 
  {x<-as.numeric(((as.Date(as.Date(Maturity)-i*365)-Start_Date)/365)
  Time <- rbind(Time, data.frame(x))}
return((Time))
}

结果如下:

http://pastebin.com/J6phR2hv

http://i.imgur.com/Sf4mpA5.png

如果我的矢量看起来像[1,2,3,4 ...,10],我希望输出为: 最终答案= [(1 * 1.1342466 + 1 * 0.6342466 + 1 * 0.1342466),(2 * 1.3835616 + 2 * 0.8835616 + 2 * 0.3835616),...,(... + 10 * 0.0630137)]

1 个答案:

答案 0 :(得分:1)

假设您想要将列表中的每个值乘以相应的标量,然后将其全部添加,这是一种方法。

list1 <- mapply(rep, 1:10, 10:1)
vec1 <- 1:10

df <- data.frame( I(list1), vec1)
df
          list1 vec1
1  1, 1, 1,....    1
2  2, 2, 2,....    2
3  3, 3, 3,....    3
4  4, 4, 4,....    4
5  5, 5, 5,....    5
6  6, 6, 6,....    6
7    7, 7, 7, 7    7
8       8, 8, 8    8
9          9, 9    9
10           10   10

mapply(df$list1, df$vec1, FUN = function(x, y) {y* sum(x)})

[1]  10  36  72 112 150 180 196 192 162 100