如何在作为参数传入的列表内计算表达式并基于数据表列生成新表?
基于数据表列表达式创建新表的R实现方法
如果你需要基于已有数据表的列编写表达式,进而生成一个全新的表,我整理了一个实用的自定义函数方案,一起来看看:
首先得加载两个必要的R包:
library(rlang) library(purrr)
接下来是核心的自定义函数from_exprs:
from_exprs = function(tb, ...) { quos(...) %>% map_dfc(~ eval_tidy(., tb)) }
简单解释下这个函数的工作逻辑:
- 用
quos(...)捕获你传入的所有表达式参数 - 通过
map_dfc()遍历每个捕获到的表达式,用eval_tidy()在原数据表tb的环境中计算表达式结果 - 最后把所有计算结果按列组合成一个新的tibble
实际示例
我们用一个简单的数据表测试一下这个函数:
首先创建原数据表:
tb = data.frame(year = 2001:2005, month = 1, names = letters[1:5])
查看原数据表内容:
> tb year month names 1 2001 1 a 2 2002 1 b 3 2003 1 c 4 2004 1 d 5 2005 1 e
然后调用from_exprs,传入两个表达式:year + month和toupper(names):
> from_exprs(tb, year + month, toupper(names)) # A tibble: 5 x 2 V1 V2 <dbl> <chr> 1 2002 A 2 2003 B 3 2004 C 4 2005 D 5 2006 E
这样就轻松得到了基于原数据表列表达式生成的新表啦!
内容的提问来源于stack exchange,提问作者Luiz Rodrigo
相关产品推荐
相关产品推荐

