【发布时间】:2019-01-15 14:53:20
【问题描述】:
如何编写一个带有 df 和变量参数的函数,同时评估两者?我从 r-bloggers 阅读了几篇文章和博客文章,我认为我对惰性评估有一些问题,但现在我非常困惑。
这是我的功能:
RAM_char_func <- function(dataset, char_var){
a <- dataset[ , c("id", char_var)]
b <- a[[id]][is.na(a[[char_var]]) %in% FALSE]
c <- a[a[[id]] %in% b , ]
c
}
我明白了:
警告 未知或未初始化的列:“char_var”。
这应该给我一个表 (c),它有两列并基于 char_var n-amount 行。虽然代码在函数外部工作,但我无法让它在函数内部工作。我也尝试了使用选择和过滤的 tidyverse-idea,但这也不起作用。
我将 R 3.5.1 与 Mac OS X(High Sierra,10.13.6)和 R Studio(最新版本)一起使用。
数据框
df <- data.frame(id = c(1:10),
var_10 = c(101:110),
var_25 = c("a", "b", NA, "c", NA, "d", NA, "e", "f", NA),stringsAsFactors = F)
df
函数外的代码是:
a <- df[ , c("id", "v_25")]
a
b <- a$id[is.na(a$v_25) %in% FALSE]
b
c <- a[a$id %in% b , ]
c
或
library(tidyverse)
df %>%
select(id, var_25) %>%
filter(is.na(var_25) %in% FALSE)
【问题讨论】:
-
请添加一个最小的工作示例和错误消息。据我所知,您可能必须将变量 id 解析为函数,但如果没有更多信息,这很难说。
-
我确实添加了一个示例 df - 原始 df 包含大约 220 个变量,因此我对其进行了简化。谢谢
-
我已更正您为 df 创建的数据。
标签: r function dataframe arguments