【发布时间】:2010-04-22 01:23:57
【问题描述】:
我在 R 中有一个 data.frame;它被称为p。 data.frame 中的每个元素都是 True 或 False。我的变量p 有,比如说,m 行和 n 列。对于每一行,严格来说只有一个 TRUE 元素。
它还有列名,即字符串。我想做的是:
- 对于
p中的每一行,我看到TRUE我想用相应列的名称替换 - 然后我想将 data.frame(现在包含
FALSEs 和列名)折叠成一个向量,该向量将包含 m 个元素。 - 我想以 R-thonic 的方式来做这件事,以便继续我在 R 中的启蒙,并为一个没有 for 循环的世界做出贡献。
我可以使用以下 for 循环执行第 1 步:
for (i in seq(length(colnames(p)))) {
p[p[,i]==TRUE,i]=colnames(p)[i]
}
但这里没有美感,我完全赞同这种 for-loops-in-R-are-probably-wrong 的心态。也许错误太强了,但它们肯定不是很好。
我真的不知道如何执行第 2 步。我有点希望字符串和 FALSE 的总和会返回字符串,但事实并非如此。我有点希望我可以使用某种 OR 运算符,但不能完全弄清楚(Python 用 'bob' 响应 False or 'bob')。因此,我再次向你们美丽的 Rstats 人求助!
【问题讨论】:
标签: r