【发布时间】:2015-02-12 21:04:00
【问题描述】:
我想完成这个:
df <- data.frame(val1 = c(10,11, 12, 13))
df2 <- data.frame(c1 = 1, c2 = 2, c3 = 3, c4 = 4)
df <- data.frame(rep(df, NCOL(df2)))
df2 <- df2[rep(1, NROW(df)),]
df3 <- df + df2
df3
val1 val1.1 val1.2 val1.3
1 11 12 13 14
2 12 13 14 15
3 13 14 15 16
4 14 15 16 17
首先,我想知道是否有更简单的方法。
秒。
一个不同的df可能是
h <- temp[EM.Names[[i]]]
> head(h)
MSCILATAM
1 9.870000e-03
2 -6.286546e-05
3 1.035069e-02
4 1.070432e-02
5 5.072980e-03
6 1.486852e-03
另外一个 df2 可能是
> fixed.avg.yield.diff
VENEZUELA PERU COLOMBIA MEXICO BRAZIL ARGENTINA CHILE
0.0037480080 0.0004009513 0.0034571043 -0.0014477117 0.0280813115 0.0006466359 -0.0000884484
> class(h)
[1] "data.frame"
> > class(fixed.avg.yield.diff)
[1] "numeric"
在这种情况下,上述解决方案将不起作用。原因是如果我尝试将“fixed.avg.yield.diff”转换为 data.frame,它的结构如下:
> data.frame(fixed.avg.yield.diff)
fixed.avg.yield.diff
VENEZUELA 0.0037480080
PERU 0.0004009513
COLOMBIA 0.0034571043
MEXICO -0.0014477117
BRAZIL 0.0280813115
ARGENTINA 0.0006466359
CHILE -0.0000884484
【问题讨论】:
-
我对你的问题很困惑,但你只是想合并数据框吗?
-
感谢@maloneypatr。我在上面编辑。出于某种原因,我只是无法掌握对 data.frames 进行简单算术“矩阵”运算的窍门,而我经常需要这样做。
-
我认为你的方法很好,如果你在
df2中有一个数字向量而不是数据框,你可以用df2 <- matrix(rep(df2, NROW(df)), byrow = TRUE, nrow= NROW(df))替换df2 <- df2[rep(1, NROW(df)),]
标签: r dataframe arithmetic-expressions replicate