2015-11-03 72 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