我有一个很大的多列数据文件,但对于这个问题,它可以简化如下:
data = {{"a", 2000}, {"a", 2010}, {"b", 1999}, {"b", 2004}, {"b",
2006}, {"c", 2012}, {"c", 2014}};
然后我有一个我想从数据中提取年份值的项目列表,例如:
selectedList = {"b", "c"};
我可以通过使用 Select[] 然后遍历 selectedList 来做到这一点:
Table[
Select[data, #[[1]] == selectedList[[i]] &][[All, 2]],
{i, 1, Length[selectedList]} ]
但是我想使用 Map,它应该比 Table 快。我可以做这个:
func[dat_, x_] := Select[dat, #[[1]] == x &][[All, 2]]
进而 :
func[data, #] & /@ selectedList
我正在寻找一种更优雅的方法来一步完成此操作,最好将 Select 直接映射到 selectedList
最佳答案
Cases[data, {#, x_} :> x] & /@ selectedList
关于wolfram-mathematica - 映射选择一个列表而不是第二个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10380445/