【发布时间】:2015-04-16 17:43:16
【问题描述】:
我有一个稀疏数据框example。它有五个数据列,但每一行只有两个条目,随机分布在列中:
id a b c d e
1 NA 10 NA NA 1
2 6 NA 10 NA NA
3 3 NA NA 2 NA
4 NA NA 9 4 NA
5 NA NA 1 NA 5
我想返回一个只有两个数据列的数据框,每行的值:
id val1 val2
1 10 1
2 6 10
3 3 2
4 9 4
5 1 5
这可以通过for 循环实现。但是我的真实数据非常大,所以我想做一个apply-like 函数。我所看到的一切都假设您知道您将使用哪些列。我尝试制作自己的单行函数,然后使用apply,但我一直收到错误“维度数不正确”。
【问题讨论】:
-
没有外部库,完全矢量化。
t(apply(example, 1, function(x) x[!is.na(x)]))