2017-03-25 17 views
2

の各要素から最長の項目を取得します:私がリストを持っているリスト

a = c("aaaa", "bbbbbbb") 
b = c("a1", "b2", "c33") 
c = "d" 
d = list(a, b, c) 

は、どのように私はループのないリストの各要素から最長アイテム入手できますか?

lapply(lapply(d, nchar), which.max) 
[[1]] 
[1] 2 

[[2]] 
[1] 3 

[[3]] 
[1] 1 

:私は最長の項目の位置を見つける方法を知っている

lapply(d, nchar) 
[[1]] 
[1] 4 7 

[[2]] 
[1] 2 2 3 

[[3]] 
[1] 1 

:私は文字の数を計算する方法を知っている

"bbbbbbb" "c33" "d" 

: つまり目標は、取得することですしかし、アイテムを選択する方法を見つけることができません。

また、lapply(d、 "[["、1)]ですべての最初の項目を選択するために、文字数(nchar)で項目を並べ替えることも考えました。しかし成功なし。

ご協力いただきありがとうございます。

答えて

3

これをすべて無名関数に入れることができます。アトミックな結果が必要なので、sapply()を使用できます。

sapply(d, function(x) x[which.max(nchar(x))]) 
# [1] "bbbbbbb" "c33"  "d"  
関連する問題