我不知道我明白在這兩個場景中的不同的輸出:ř編程 - 使用lapply和一個簡單的功能之間的差異
(1)
pioneers <- c("GAUSS:1777", "BAYES:1702", "PASCAL:1623", "PEARSON:1857")
split <- strsplit(pioneers, split = ":")
split
(2)
pioneers <- c("GAUSS:1777", "BAYES:1702", "PASCAL:1623", "PEARSON:1857")
split <- lapply(pioneers, strsplit, split = ":")
split
在這兩種情況下,輸出是一個列表,但我不知道什麼時候我會用一個符號(簡單地適用於載體的功能)或其他(使用LAPP通過向量循環函數)。
感謝您的幫助。
Greg
我認爲這部分取決於你想應用的功能。如果它可以處理矢量,你可以做'myfun(myvector)'。如果沒有,你可以使用lapply。 – Heroka
在這種特殊情況下,我不確定什麼時候需要做後者(它會創建一個更復雜的與IMO合作的結構)。 「strsplit」的結果通常是'lapply'。另外,R有一個'split'函數(像''lapsly''這樣的'strsplit')。另外,儘管區分使用'split'作爲變量名稱還是內置函數是非常聰明的,但對命名空間的跺腳可能會使調試問題變得很困難(例如,當您意外地將「split」分配給某個事物,但意味着將呼叫的輸出分配給「split」)。 – hrbrmstr
'strsplit'是一個矢量化函數,即它可以在整個矢量上工作,對每個元素應用分割,所以這裏不需要'lappply'。如果要修改/擴展結果列表的某些內容,例如提取每個列表元素的第二個元素,可以使用'lapply'(split,「[」,2) '(其中'split'是'strsplit(pioneers,split =「:」)''的結果。 –