gpt4 book ai didi

r - R 中的 NA 值问题

转载 作者:行者123 更新时间:2023-12-02 09:20:14 26 4
gpt4 key购买 nike

我觉得这应该很简单,我已经在网上看过了,但我一直收到错误消息。我过去做过很多分析,但对 R 和编程还很陌生。

我有一个非常基本的函数来计算 x 列数据的均值:

columnmean <-function(y){
nc <- ncol(y)
means <- numeric(nc)
for(i in 1:nc) {
means[i] <- mean(y[,i])
}
means
}

我在 RStudio 中使用包含的“空气质量”数据集对其进行测试。当我加载 AQ 数据集并运行我的函数时:

data("airquality")
columnmean(airquality)

我回来了:

不适用 不适用 9.957516 77.882353 6.993464 15.803922

因为 AQ 中的前两个变量中有 NA。 K,酷。我想抑制 NA,这样 R 就会忽略它们并运行该函数。

我读到我可以用 na.rm=TRUE 来指定它,比如:

columnmean(airquality, na.rm = TRUE)

但是当我这样做时,我收到一条错误消息:

“列均值错误(空气质量,na.rm = TRUE): 未使用的参数(na.rm = TRUE)”

我到处都在阅读我只需要包含 na.rm = TRUE 并且该函数将运行并忽略 NA 值...但我一直收到此错误。我也试过 use = "complete"和我能找到的任何其他东西。

两个注意事项:

我知道我可以使用 is.na 创建一个向量,然后对数据进行子集化,但我不需要那个额外的步骤,我只希望它运行该函数并忽略丢失的数据。

我也知道我可以在函数中指定忽略或不忽略,但我想要一种方法来即时选择忽略/不忽略,逐个操作,而不是让它成为函数本身。

感谢您的帮助。谢谢大家。

最佳答案

我们可以在 mean 中包含 na.rm = TRUE

columnmean <-function(y){
nc <- ncol(y)
means <- numeric(nc)
for(i in 1:nc) {
means[i] <- mean(y[,i], na.rm = TRUE)
}
means
}

如果我们需要将 na.rm 参数有时用作 FALSE 而有时用作 TRUE,则在“columnmean”的参数中指定

columnmean <-function(y, ...){
nc <- ncol(y)
means <- numeric(nc)
for(i in 1:nc) {
means[i] <- mean(y[,i], ...)
}
means
}

columnmean(df1, na.rm = TRUE)
#[1] 1.5000000 0.3333333
columnmean(df1, na.rm = FALSE)
#[1] 1.5 NA

数据

 df1 <- structure(list(num = c(1L, 1L, 2L, 2L), x1 = c(1L, NA, 0L, 0L
)), .Names = c("num", "x1"), row.names = c(NA, -4L), class = "data.frame")

关于r - R 中的 NA 值问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43237325/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com