【发布时间】:2019-07-30 04:23:56
【问题描述】:
我正在尝试创建一个函数,该函数将从数据集中获取 2 个变量,并将它们的不同值并排映射,然后将输出写入 csv 文件。我将使用 dplyr 的 distinct 函数来获取唯一值。
map_table <- function(df, var1, var2){
df_distinct <- df %>% distinct(var1, var2)
write.csv(df_distinct, 'var1.csv')
}
map_table(iris, Species, Petal.Width)
1) map_table(iris, Species, Petal.Width) 不能产生我想要的。它应该产生 27 行数据,而不是我得到 150 行数据。
2) 如何在 var1 输入后命名 csv 文件? 所以如果var1 = 'Sepal.Length',文件名应该是'Sepal.Length.csv'
【问题讨论】:
-
non-standard evaluation (NSE) 是使用
dplyr时的一个众所周知的问题。这是 [2014 年的一个相关问题](我如何告诉 dplyr 中的 select() 它看到的字符串是数据框中的列名);但这里的解决方案更干净,所以这可能不应该是重复关闭的。
标签: r function dplyr parameter-passing non-standard-evaluation