2017-02-14 20 views
0

関数に引数として渡されたオブジェクトから名前を取得するためのdeparse + substituteトリックは知っていますが、ループ内の同じトリックは機能しません。ループ内のオブジェクトの名前を取得

(単なるテスト用)私のコード:

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

は ''名(マイリスト)と何が問題なのですか? –

答えて

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を返しているため、若干異なることをしています。 –

関連する問題