从字符串中评估NA_integer_

wib*_*ley 3 integer r na

我如何读取(从文件中)一个值,"NA_integer"并让R解释它,就好像NA_integer是明确键入的一样.

以下是我失败的两次尝试:

q <- "NA_integer_"
get(q)        # Returns "Error in get(q) : object 'NA_integer_' not found"
eval(q)       # Returns the character value
Run Code Online (Sandbox Code Playgroud)

这是我能得到的最接近的.但我不喜欢它,因为它牺牲了很多普遍性.

f <- "as.integer"
v <- NA
do.call(f, list(v))
Run Code Online (Sandbox Code Playgroud)

编辑:添加尾随下划线

akr*_*run 5

根据 ?NA

NA是长度为1的逻辑常量,其包含缺失值指示符.除了原始NA之外,NA可以被强制转换为任何其他矢量类型.还存在支持缺失值的其他原子向量类型的常量NA_integer_,NA_real_,NA_complex_和NA_character_:所有这些都是R语言中的保留字.

所以我们需要

q <- "NA_integer_"
Run Code Online (Sandbox Code Playgroud)

然后使用

eval(parse(text=q))
#[1] NA
Run Code Online (Sandbox Code Playgroud)