【发布时间】:2018-04-06 16:07:05
【问题描述】:
我正在尝试将自写函数应用于数据框的行。
library(dplyr) # only used for data_frame
DF = data_frame(x = c(50, 49, 20), y = c(132, 124, 130), z = c(0.82, 1, 0.63))
x y z
<dbl> <dbl> <dbl>
1 50 132 0.82
2 49 124 1.00
3 20 130 0.63
实际数据框有数千行,这只是一个示例。
我的函数非常复杂并且做了很多事情,最后我为 DF 的每一行得到一个新行。 假设为简单起见,该函数将 1 添加到第 1 列,将 2 添加到第 2 列,将 3 添加到第 3 列(这当然可以向量化,但是我的函数,我们称之为 Funct,可以做更多的事情)。 所以:
Funct = function(DF) {
DF[1]= DF[1]+1
DF[2] = DF[2]+2
DF[3] = DF[3]+3
return(DF)
}
我如何以最有效的方式应用此功能以最终获得带有输出的新数据框:
> DF
x y z
<dbl> <dbl> <dbl>
1 51 134 3.82
2 50 126 4.00
3 21 132 3.63
【问题讨论】:
-
如果所有数据框都是同一类型,为什么不使用矩阵?我相信您的问题是XY Problem。在简化您的实际用例时,您忽略了重要的细节。
标签: r dataframe vectorization