【发布时间】:2018-07-07 22:16:25
【问题描述】:
我有以下问题,我正在提取一个只包含 NAs 的向量,我想总结一下。但系统返回错误而不是0。这是因为将参数变量传递给函数。
考虑一下这段代码:
ConsData 是一个具有 5 列和多行的 data.frame。
假设我们有变量/列 A B C D E;
D 列只是NA
WorkSum <- function(var) {
Sumer <- (sum(ConsData[VARIABLE], na.rm = TRUE))
}
WorkSum(D)
产生以下错误:
FUN(X[[i]], ...) 中的错误: 仅在具有所有数值变量的数据框上定义
但是,如果我不将这一行参数化并重写如下,一切正常。
Sumer <- (sum(ConsData$D, na.rm = TRUE))
【问题讨论】:
-
VARIABLE来自哪里?如果要提取向量,请使用双括号[[。 -
并确保您的函数实际返回
Sumer。 -
符合@markus的评论,看看
class(mtcars["mpg"])和class(mtcars[["mpg"]])的区别。便利的$访问(mtcars$mpg)模仿了后者。单括号表示法允许多于一列,因此mtcars[c("mpg","cyl")]返回一个 2 列框架;双括号表示法总是需要单列,不多也不少。