如何读取foo = Foo.objects.filter(common=True)
之类的值(来自文件)并让R解释它,就像明确键入"NA_integer"
一样。
以下是我失败的两次尝试:
NA_integer
这是我能得到的最接近的。但我不喜欢它,因为它牺牲了很多普遍性。
q <- "NA_integer_"
get(q) # Returns "Error in get(q) : object 'NA_integer_' not found"
eval(q) # Returns the character value
修改:添加了尾随下划线
答案 0 :(得分:5)
根据?NA
NA是长度为1的逻辑常量,包含缺失值 指示符。除了原始NA之外,NA可以被强制转换为任何其他矢量类型。 还有常数NA_integer_,NA_real_,NA_complex_和 支持缺失的其他原子向量类型的NA_character_ 值:所有这些都是R语言中的保留字。
所以我们需要
q <- "NA_integer_"
然后使用
eval(parse(text=q))
#[1] NA
答案 1 :(得分:1)
也许在读取文件时设置na.strings
参数,请参见下面的示例:
# dummy file
write.csv(data.frame(myCol = c(1:2, "NA", "NA_integer_")),
"myFile.csv")
# this reads only NA as NA, and column is class of Factor, not what we want...
df1 <- read.csv("myFile.csv")
is.na(df1$myCol)
# [1] FALSE FALSE TRUE FALSE
str(df1)
# 'data.frame': 4 obs. of 2 variables:
# $ X : int 1 2 3 4
# $ myCol: Factor w/ 3 levels "1","2","NA_integer_": 1 2 NA 3
# once we set na.strings, it reads both NAs and NA_integer_ as NAs and column is class of int.
df1 <- read.csv("myFile.csv", na.strings = c("NA", "NA_integer_"))
is.na(df1$myCol)
# [1] FALSE FALSE TRUE TRUE
str(df1)
# 'data.frame': 4 obs. of 2 variables:
# $ X : int 1 2 3 4
# $ myCol: int 1 2 NA NA