2017-02-14 208 views
0

我知道deparse +替代技巧從作爲參數傳遞給函數的對象中獲取名稱,但循環中的相同技巧無效。獲取循環內對象的名稱

我的代碼(只是用於測試):

mylist <- list(first = c("lawyer","janitor"), second = c("engineer","housewife")) 

for (element in names(mylist)){ 
    print(deparse(substitute(mylist[[element]]))) 
} 

[1] "mylist[[element]]" 
[1] "mylist[[element]]" 

有沒有得到使用for循環按照使用lapply

lapply(mylist, function(x) { print(names(x))}) 
# NULL 
# NULL 
# $first 
# NULL 
# 
# $second 
# NULL 

結果?:

first 
second 
+2

在您的例子,你可以只用'打印(元)'.. –

+1

這有什麼錯'名字(MYLIST)'? –

回答

1

使用的 「名字」

for (element in names(mylist)){ 
    print(as.name(element)) 
} 
2

的任何方式你的問題

for (element in names(mylist)){ 
    print(element) 
} 
# [1] "first" 
# [1] "second" 
+1

lapply做的事情稍有不同,因爲它將'names'函數應用於每個列表元素,返回NULL,因爲它們在示例中沒有名稱。 –