2017-05-15 12 views
0

関数の引数としてリストの名前を渡して、関数内のそのリストに割り当てたいとします。以下にその問題を示します。R:引数として渡されたリストに代入しようとしています

names <- c("a", "b", "c") 
mylist <- list() 

foo <- function(listname) { 
for(name in names){ 
    listname[[name]] <<- 7 
    } 
} 

これは機能せず、 "listname"がわからないというエラーが発生します。誰でもこれをクリアすることはできますか?私は最も感謝しています。

+0

おそらくあなたは、 'FOO(マイリスト)を'行っています。問題はほぼ確実に '<< - 'を '<'に変更する必要があります。また 'foo'と' listname'に 'names'を渡す方が良いでしょう。 – user1310503

+0

ありがとうございます。 <<の私の使用は非常に慎重です。 foo(mylist)を呼び出した後、mylist $ a、b、cの各要素(この例では7)を持つリストmylistが必要です。 – fcummins

答えて

0

あなたは間違ったことがいくつかあると思います。まず、mylistには何も格納されていないと思います。つまり、あなたの関数がチェックする名前や名前がありません。このようなあなたのリストの何かを設定してみてください:

mylist <- list("a", "b", "c") 
names(mylist) <- c("a", "b", "c") 
mylist 
#> $a 
#> [1] "a" 
#> 
#> $b 
#> [1] "b" 
#> 
#> $c 
#> [1] "c" 

をあなたの機能では、次のようにする必要がありa)はnames(listname)ので、あなたが実際にリストの名前をチェックし、あなたがした後、b)のリストを返すされている操作を行います再割り当て。次に、リストにを割り当てると、それらの値が返されます。

foo <- function(listname) { 
    for(name in names(listname)){ 
     listname[[name]] <- 7 
    } 

    listname 
} 

foo(mylist) 
#> $a 
#> [1] 7 
#> 
#> $b 
#> [1] 7 
#> 
#> $c 
#> [1] 7 

mylistはまだそれに同じ値を持っていることに注意してください。何も再割り当てされていない。

mylist 
#> $a 
#> [1] "a" 
#> 
#> $b 
#> [1] "b" 
#> 
#> $c 
#> [1] "c" 
+0

ありがとう! – fcummins

関連する問題