2015-11-03 76 views
3

所以我列出了带有字符串(ID)的列表,但同时我的字符串是值的名称,其中一些值仅为NULL。有没有办法运行一个循环来检查名称后面是否有值,或者它只是NULL?如何检查赋值为“字符串”的值

>list <- c("id1","id2","id3") 
>id1 
dimension5 sessions 
     12  2 
>id2 
dimension5 sessions 
     13  4 
>id3 
NULL 

至于最后的结果,我想看到这样的事情(或1,而不是yes和0,而不是没有)

id value 
id1 yes 
id2 yes 
id3 no 
+0

@RichardScriven - 大概是因为它会返回'“错误:找不到对象'id3'”如果它不存在。 – thelatemail

+0

@RichardScriven是的,因为这是从Google Analytics中提取报告的结果。那家伙没有完成我的条件,所以NULL被分配给他。 – AlienDeg

回答

7

getmget每个项目并检查是否is.null

L <- c("id1","id2","id3") 
id1 <- c(12,2) 
id2 <- c(13,4) 
id3 <- NULL 

stack(!vapply(mget(L), is.null, logical(1))) 
# values ind 
#1 TRUE id1 
#2 TRUE id2 
#3 FALSE id3 
+0

它的工作原理!非常感谢! – AlienDeg

+0

您也可以使用'NA'来代替'logical(1)',因为它也是逻辑的,因为Fore! –

+0

@RichardScriven - 如果我们是代码打高尔夫球的话,我只会使用'stack(!sapply(mget(L),is.null))',但当我知道输出格式时,我一直强迫自己使用'vapply' 。 – thelatemail