当条件不在R中返回结果时,如何返回NA而不是数字(0)

时间:2015-06-27 02:34:34

标签: r na

我在R中的数据上做了一个简单的布尔条件 有时

中不存在数据

例如,如果此条件没有匹配,则返回数字(0)而不是值

item_size = data_size$size[data_size$Item == item_code] 

如何确保返回NA而不是一无所有?

3 个答案:

答案 0 :(得分:3)

如果您总是期望只有一个值,那么您可以这样做:

item_size <- c(data_size$size[data_size$Item == item_code], NA)[1]

答案 1 :(得分:1)

试试这个(因为if - 对零长度项目的测试是相当标准的R术语):

item_size = if( length( y <-data_size$size[data_size$Item == item_code] ) ){ 
                y} else { NA}

从上下文来看,我实际上想知道这是否有意:

item_size = if( length( y <-data_size$size[data_size$Item == item_code] ) ){ 
                length(y) } else { NA}

答案 2 :(得分:0)

你的问题有点不清楚它是如何被玷污的,但是如果它被用来,我认为你可以用一个捕捉来测试项目号是否存在

# set up test data
Item <- c(1:4)
size <- c(11:14)

data_size <- as.data.frame(cbind(Item,size))

# wrap your command in an ifelse to see if the item being looked for is present,
# if it is then return the item code, if not return NA 

item_size <- ifelse(is.element(item_code,unique(data_size$Item))==TRUE,
                          data_size$size[data_size$Item == item_code],
                          NA)