如何 return NA 而不是 numeric(0) 当条件不 return 导致 R
How to return NA instead of numeric(0) when conditions do not return a result in R
我在 R 中对我的数据做一个简单的布尔条件
中有时不存在数据
例如,如果此条件不匹配,它将 return 数字 (0) 而不是值
item_size = data_size$size[data_size$Item == item_code]
我如何确保 NA returned 而不是什么都没有?
试试这个(因为 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}
你的问题有点不清楚它是如何被隐含的,但如果它像我认为的那样被使用,你可以放入一个 catch 来测试项目编号是否存在
# 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)
如果您总是期望只有一个值,您可以这样做:
item_size <- c(data_size$size[data_size$Item == item_code], NA)[1]
我在 R 中对我的数据做一个简单的布尔条件
中有时不存在数据例如,如果此条件不匹配,它将 return 数字 (0) 而不是值
item_size = data_size$size[data_size$Item == item_code]
我如何确保 NA returned 而不是什么都没有?
试试这个(因为 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}
你的问题有点不清楚它是如何被隐含的,但如果它像我认为的那样被使用,你可以放入一个 catch 来测试项目编号是否存在
# 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)
如果您总是期望只有一个值,您可以这样做:
item_size <- c(data_size$size[data_size$Item == item_code], NA)[1]