![](/img/trans.png)
[英]How do I combine vectors into a dataframe using an index vector in R?
[英]How do I apply an index vector over a list of vectors?
我想將長索引向量(50+個非順序整數)應用於向量的長列表(50個包含100+個名稱的字符向量),以便檢索特定值(作為列表,向量或數據幀)。
下面是一個簡化的示例:
> my.list <- list(c("a","b","c"),c("d","e","f"))
> my.index <- 2:3
期望的輸出
[[1]]
[1] "b"
[[2]]
[1] "f"
##or
[1] "b"
[1] "f"
##or
[1] "b" "f"
我知道我可以使用以下方法從每個元素中獲得相同的值:
> lapply(my.list, function(x) x[2])
##or
> lapply(my.list,'[', 2)
我可以通過以下方法從每個元素中提取第二個和第三個值:
> lapply(my.list,'[', my.index)
[[1]]
[1] "b" "c"
[[2]]
[1] "e" "f"
##or
> for(j in my.index) for(i in seq_along(my.list)) print(my.list[[i]][[j]])
[1] "b"
[1] "e"
[1] "c"
[1] "f"
我不知道如何從每個元素中僅提取一個值。
我已經找了幾天,還沒有找到完成此操作的任何示例,但這似乎很簡單。 我在這里錯過明顯的東西嗎?
謝謝你,斯科特
每當遇到類似lapply
但涉及多個並行列表/向量的問題時,請考慮使用Map
或mapply
( Map
只是對mapply
SIMPLIFY=FALSE
硬編碼的mapply
的包裝)。
嘗試這個:
Map("[",my.list,my.index)
#[[1]]
#[1] "b"
#
#[[2]]
#[1] "f"
..要么:
mapply("[",my.list,my.index)
#[1] "b" "f"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.