【发布时间】:2017-04-21 18:00:03
【问题描述】:
按比例缩小我的数据框如下所示:
+---+------------+-------------+
| | Label1 | Label2 |
+---+------------+-------------+
| 1 | T | F |
| 2 | F | F |
| 3 | T | T |
+---+------------+-------------+
我需要创建一个列表列表,将列名映射到所有以 false 布尔值作为其值的行号。对于上面的示例,它看起来像这样:
{"Label1" : (2), "Label2" : (1,2)}
我目前正在这样做:
myList = with(data.frame(which(!myDataFrame, arr.ind = TRUE)), list("colNames" = names(myDataFrame)[col], "rows" = row))
l = list()
count = 1;
for (i in myList[["colNames"]]) {
tmpRowNum = myList[["rows"]][[count]];
tmpList = l[[i]];
if (is.null(tmpList)) {
tmpList = list();
}
l[[i]] = c(tmpList, list(tmpRowNum))
count = count + 1;
}
这确实有效,但由于我是 R 新手,我只能假设有一种更有效的方法可以做到这一点。 with 函数创建了两个单独的列表,我必须将它们组合起来才能得到我正在寻找的结果。
【问题讨论】:
标签: r