我正在尝试为以下问题开发可重用的解决方案。
我将拥有各种数据框,我希望定义一些基本功能,然后将这些功能应用于数据框中的各个列。结果将是与原始数据帧具有相同行数和列数的数据帧。
我希望这个解决方案可以重复使用,因为不同的功能组合可以应用于不同的数据帧。
用语言解释这一点有点棘手。我希望下面的代码能使上述内容更加清晰。
# construct an example data frame
v_a <- c(1, 4, 8, 10, 12)
v_b <- c(4, 6, 7, 4, 3)
v_c <- c(10, 23, 45, 12, 45)
v_d <- c(12, 45, 7, 10, 5)
df <- data.frame(a = v_a, b = v_b, c = v_c, d = v_d)
# define some example functions
fn_1 <- function(x) x * 3
fn_2 <- function(x) x * 4
# assemble functions into a vector
vct_functions <- c(fn_1, fn_2, fn_1, fn_1)
# apply vector of functions to columns in a data.frame
new_df <- fn_apply_functionList(df, vct_functions)
我希望重用上面的解决方案,以便可以将不同的功能组合应用于相同或不同的数据框。
同样,以下是一个代码片段,以使其更清晰。
# create another vector of functions
vct_functionsB <- c(fn_3, fn_4, fn_1, fn_2)
# apply vector of functions to columns in a data.frame
new_df <- fn_apply_functionList(another_df, vct_functions)
对优雅解决方案的任何想法都会非常感激。
答案 0 :(得分:3)
@geotheory几乎就在那里,vct_functionsB
被强制转移到list
试试这个,
do.call(cbind, lapply(1:ncol(df), function(c) vct_functions[[c]](df[, c])))
答案 1 :(得分:0)
也许这个......?
self.paint(self.screen)
然后取消列出/解析结果..