R - 基于逻辑匹配的列与字符串的组合

时间:2015-05-07 13:40:52

标签: r

在上一个问题(Setting Value Based on Matching Column)中,我试图获取一个字符串,将其拆分为元素,并使用逻辑语句为每个元素创建一个列。这得到了很好的回答。

但经过几个月的研究,我现在需要一些反面的东西。

...鉴于

df     <- data.frame(E1=FALSE,E11=TRUE,E20=FALSE,E30=FALSE,E31=TRUE,E100=FALSE,E300=FALSE,E313=TRUE,ECAT=TRUE)

我需要生成一个包含TRUE匹配的所有列名的字符串 - 这有望产生类似......

> df[1,]
     E1    E11   E20   E30   E31   E100  E300  E313  ECAT  Topics
  1  FALSE TRUE  FALSE FALSE TRUE  FALSE FALSE TRUE  TRUE  E11,E31,E313,ECAT

实际上我有3,270行,实际上有102个主题,所以我真的需要为每一行提供一些TRUE主题代码的连接。

我的尝试没有任何效果,谁会自愿提出答案或重复问题/答案的链接(因为它们可能存在 - 毕竟这是一个R问题)?

2 个答案:

答案 0 :(得分:3)

你可以尝试

df$Topics <- apply(df, 1, function(x) toString(names(x)[x]))

答案 1 :(得分:2)

您可以使用apply执行此操作。

df$Topics = apply(df,1,function(x) paste0(colnames(df)[x],collapse=','))