我在含有ř重複元件含有各元素的索引向量中的返回列表
a<-c("A","A","A","B","B","C","A")
我想知道的最有效的方式在列表中變換它的向量,其中每個元素是在原來的矢量鍵,並且其位置爲值:
l<-list(A=c(1,2,3,7),B=c(4,5),C=c(6))
l
$A
[1] 1 2 3 7
$B
[1] 4 5
$C
[1] 6
我在含有ř重複元件含有各元素的索引向量中的返回列表
a<-c("A","A","A","B","B","C","A")
我想知道的最有效的方式在列表中變換它的向量,其中每個元素是在原來的矢量鍵,並且其位置爲值:
l<-list(A=c(1,2,3,7),B=c(4,5),C=c(6))
l
$A
[1] 1 2 3 7
$B
[1] 4 5
$C
[1] 6
split(seq_along(a), a)
# $A
# [1] 1 2 3 7
#
# $B
# [1] 4 5
#
# $C
# [1] 6
一種可能的解決方案:
mywhich<-function(x){
out<-which(a==x)
return(out)
}
l <- sapply(unique(a), mywhich)
嗯。爲什麼不'mywhich < - 函數(x)哪一個(a == x)'在一個表達式中執行相同?對於這個問題,'mywhich'特定於'a',所以在這裏使用一個命名函數是沒有意義的 - 只需使用'sapply(unique(a),function(x)which(x == a))''。 –
你不會把我拖入這場宗教鬥爭中(我每天都在哥倫比亞):有些人寧願不要因爲他們自己的原因使用匿名函數:-) –
在函數式語言中?請原諒我的法語,但這聽起來很愚蠢。 –
驚人高效! –