R 如何根据符合特定条件的数据框单元格索引和打印列名

R 如何根据符合特定条件的数据框单元格索引和打印列名,r,R,我有一个编码问题,我无法自己解决,所以我非常感谢您的帮助。总而言之,我想创建一个新的列,附加到我的数据框,列出符合特定条件(逐行)的单元格的列名。我已经寻找了很长一段时间的解决方案,但我仍然没有找到适合我的 假设我得到了这样一个数据帧: a <- c(90, NA,20) b <- c(NA, 89, 20) d <- as.data.frame(cbind(a,b)) names(d) <- c("house", "cat") | house | cat --|-

我有一个编码问题,我无法自己解决,所以我非常感谢您的帮助。总而言之,我想创建一个新的列,附加到我的数据框,列出符合特定条件(逐行)的单元格的列名。我已经寻找了很长一段时间的解决方案,但我仍然没有找到适合我的

假设我得到了这样一个数据帧:

a <- c(90, NA,20)
b <- c(NA, 89, 20)
d <- as.data.frame(cbind(a,b))
names(d) <- c("house", "cat")

  | house | cat
--|-------|----
1 | 90    | NA
--|-------|----
2 | NA    | 89
--|-------|----
3 | 20    | 20
   | house | cat | newcol
---|-------|-----|--------
1  | 90    | NA  | house  
---|-------|-----|--------
2  | NA    | 89  | cat    
---|-------|-----|--------
3  | 20    | 20  | house, cat
我必须承认,尽管我已经搜索了大约一个星期了,但我很难对单元格和柱状图进行索引。我尝试了for循环,也尝试了使用apply。我已经尝试了我能想到的每一个单括号-双括号版本。我试着把哪个()包括在apply中,我试着。。很多

大多数时候,我处理apply函数中的行,因为据我所知,我希望函数在这些行上循环,最后在每行的末尾写一个新的向量。但这并没有让我一事无成,许多版本中有一个是这样的:

col <- colnames(d)[apply(d, 1, function(x) which(!is.na(x),arr.ind=T))]
col这应该可以

df$newcol <- apply(df,1,function(x) paste(names(df)[!is.na(x)],collapse=", "))

df
  house cat     newcol
1    90  NA      house
2    NA  89        cat
3    20  20 house, cat
df$newcol这应该可以

df$newcol <- apply(df,1,function(x) paste(names(df)[!is.na(x)],collapse=", "))

df
  house cat     newcol
1    90  NA      house
2    NA  89        cat
3    20  20 house, cat

df$newcol也
d$newcol谢谢你们两位!第一个解决方案看起来与我的许多尝试中的一个没有太大区别。。。我非常感谢现在能够继续。这是令人沮丧的,虽然,我喜欢解决这个问题,而不必麻烦你。无论如何,非常感谢!另外
d$newcol谢谢你们两位!第一个解决方案看起来与我的许多尝试中的一个没有太大区别。。。我非常感谢现在能够继续。这是令人沮丧的,虽然,我喜欢解决这个问题,而不必麻烦你。无论如何,非常感谢!
e <- which(!is.na(d),arr.ind=T)
list <- names(d[e[,2]])
list
[1] "house"   "house.1" "cat"     "cat.1"  
df$newcol <- apply(df,1,function(x) paste(names(df)[!is.na(x)],collapse=", "))

df
  house cat     newcol
1    90  NA      house
2    NA  89        cat
3    20  20 house, cat