我有一个像这样的chr向量:
t<-c("lucas","2","3","luciano","1","5","jack","1","luciana","2","3","4","5")
Lucas,2,3将是同一客户。 Luciano,1,5将会是一个不一样的,依此类推。
我创建了两个向量,在其中定义每个客户的限制。
start<-c(1,4,7,9)
end<-c(3,6,8,13)
我需要将它们映射到列列表中。因此,每个客户都有一栏。如果我单击它,我将打开每个客户矩阵。
在这种情况下,我想象一个具有三行的列列表。如果我单击卢卡斯的列表,我将拥有
卢卡斯2 3
还有露西安娜
Luciana 2 3 4 5
有什么办法可以用地图做到这一点?
答案 0 :(得分:0)
我不知道如何使用map
来做到这一点,但是mapply
似乎工作得很好:
t<-c("lucas","2","3","luciano","1","5","jack","1","luciana","2","3","4","5")
start<-c(1,4,7,9)
end<-c(3,6,8,13)
output <- mapply(start, end, FUN = function(start_i, end_i){
t[start_i:end_i]
})
或者您可能会喜欢列表名称并执行以下操作:
output <- mapply(start, end, FUN = function(start_i, end_i){
t[(start_i+1):end_i]
})
names(output) <- t[start]
答案 1 :(得分:0)
您可以使用@Gregor Thomas所示的map
,但您认为map2
更合适,类似于@Dubukay显示的基本R选项mapply
。
对于您的问题中的单击和打开矩阵部分,我感到很困惑,但也许您是想设置列表的名称。
list_vec <- purrr::map2(start, end, ~t[.x:.y])
names(list_vec) <- t[start]
list_vec
#$lucas
#[1] "lucas" "2" "3"
#$luciano
#[1] "luciano" "1" "5"
#$jack
#[1] "jack" "1"
#$luciana
#[1] "luciana" "2" "3" "4" "5"
因此,现在您可以使用list_vec$lucas
获取所有lucas
'元素。