【发布时间】:2019-03-14 16:41:15
【问题描述】:
我正在编写一个函数,该函数接受一些向量并检查它是否为数字。如果为假,它将在 else 语句中将数值替换为 NA。我尝试过以多种方式使用 is.numeric() 函数,但运气不佳。任何帮助,将不胜感激!
test <- function(x){
if(is.numeric(x) == TRUE){
mean.x <- mean(x)
vectorlist <- list(mean.x)
}
else
return(vectorlist)
}
x <- c("a", 1, 2)
test(x)
【问题讨论】:
-
所以我认为这里的基本误解是向量只能包含单一类型的元素。您可以键入
x <- c("a", 1, 2),但如果您检查,结果是所有字符。因此,如果is.numeric(x)为 TRUE,则所有元素都是数字。 -
如果向量包含除 I 号以外的任何内容,我不希望它取平均值。所以,如果我用 x 运行它,我希望它返回 "a" NA NA
-
好的,但您确实意识到
x由三个字符、“a”、“1”和“2”组成。不是1号还是2号?您的评论似乎暗示您真正想要的是获取一个向量,如果它不是数字,请将所有 可以转换 的值替换为带有 NA 的数字? -
...例如,您似乎在描述这样的内容:
x[!is.na(as.numeric(x))] <- NA。 -
是的,它将其余的值转换为第一个值的类型对吗?这就是我想做的。
标签: r