![](/img/trans.png)
[英]How to modify the list/vector argument in place in the R function lapply?
[英]How to use lapply with a function that requires a vector as an argument
我試圖在向量列表中找到我有 3 或 1 的位置,但如果我使用的 function 需要向量作為參數,我不知道如何使用 lapply 來做到這一點。 前任。:
k <- list(c(2,0,2,1),c(3,0,2,0),c(0,1,2,0)) lapply(k,match(c(1,3),k)) # The problem is here
lapply
將list
作為其第一個參數,並將 function 作為其第二個參數。 function 的可選 arguments 可以作為額外的 arguments 添加到lapply
。
通過使用match(c(1,3), k)
,您在c(1, 3)
和您的列表k
上調用match
。 您要做的是將 function 傳遞給lapply
,它將以向量x
作為參數並返回match(c(1, 3), x)
。 然后lapply
將對列表k
的每個元素執行此 function 。
這就是你應該如何使用lapply
:
k <- list(c(2,0,2,1),c(3,0,2,0),c(0,1,2,0))
lapply(k, function(x) match(c(1,3), x))
# [[1]]
# [1] 4 NA
#
# [[2]]
# [1] NA 1
#
# [[3]]
# [1] 2 NA
@Samuel Diebolt 的回答在 lapply 中使用匿名lapply
調用。 要在沒有匿名調用的情況下使用它,語法將是
lapply(k, match, x = c(1, 3))
#[[1]]
#[1] 4 NA
#[[2]]
#[1] NA 1
#[[3]]
#[1] 2 NA
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.