如何在R中检查向量每个元素的数据类型并判断是否全为数值型?
如何检查向量中每个元素的数据类型
首先得明确:R里的向量是同质数据结构,整个向量的所有元素必须属于同一种基础类型。你定义的y里的NA是数值型的NA(对应内置的NA_real_),所以整个向量的类型就是数值型,这就是is.numeric(y)返回TRUE的原因。
如果要逐个查看每个元素的类型(包括NA的具体类型),可以用以下方法:
方法1:lapply() + typeof()
typeof()直接作用在向量上会返回整体类型,所以先把向量转成列表,再逐个获取每个元素的类型:
y <- c(8.2, 2.5, 4.3, 3.2, 4.9, 7.0, NA, 5.3, 7.7, NA, 8.1, 3.0, 6.4, 6.5) lapply(as.list(y), typeof)
运行后会看到所有元素(包括那两个NA)的类型都是"double",属于数值型的一种。
方法2:sapply() + class()
同样先转成列表,再用class()检查每个元素的类:
sapply(as.list(y), class)
结果会显示每个元素的类都是"numeric"。
补充:确认NA的类型
如果担心向量里混有不同类型的NA(比如字符型的NA_character_),可以单独筛选出NA元素来验证:
# 提取第一个NA元素查看类型 typeof(y[is.na(y)][1])
返回"double",说明你的例子里的NA都是数值型的,因此整个向量保持数值类型。
内容的提问来源于stack exchange,提问作者NovaX
相关产品推荐
相关产品推荐

