一覧

2017-11-03 12 views
0

私は、このような一覧

lst <- list(1, c(3, 4, 6), c(2, 5)) 

、とはこのリストのすべての最初の要素が素数の重要性を持っているリストを持っています。あなたはリストの位置にある数字を考えることができます。例えば、位置1が他と結合されていない1〜6個の位置が存在する。 4位と6位と3位5と組み合わされる位置2と組み合わされて今のようにベクトルを作成する必要があり、

W1 W2 W3 W4 W5 W6 
W1 W2 W3 W3 W2 W3 

これは名前付きベクトルです。名前は位置の名前であり、値はそれらが結合される位置です。これは簡単なようですが、私の時間を多く取っています。前もって感謝します。

答えて

1
res <- character(length(unlist(lst))) 
names(res) <- paste0("W", seq_along(unlist(lst))) 
lapply(lst, function(x) res[x] <<- paste0("W", x[1])) 
res 
# W1 W2 W3 W4 W5 W6 
# "W1" "W2" "W3" "W3" "W2" "W3" 

編集

それとも、このforループが優れている(と<<-を回避し)これらのケースのいずれかになります。

res <- character(length(unlist(lst))) 
names(res) <- paste0("W", seq_along(unlist(lst))) 
for (x in lst) res[x] <- paste0("W", x[1]) 
res 
# W1 W2 W3 W4 W5 W6 
# "W1" "W2" "W3" "W3" "W2" "W3" 
0

もう一つの選択肢。可能であれば、タイミングを確認してください。それは他人を助けるかもしれない。

t<-list() 
for(t1 in lst){t[paste0("w",t1)]<-paste0("w",t1[1])} 
output<-unlist(t, recursive = TRUE, use.names = TRUE)