R获取在数据框列中具有字符串变量的第一行的行号

时间:2019-05-09 06:32:15

标签: r string

我正在使用动态生成的数据帧。

nock("http://www.google.com")
   .get(/.*/)

上面看起来像这样:

structure(list(`4` = c(NA, NA, "Location", NA), `5` = c(NA, NA, 
"Size", "W")), row.names = c(NA, 4L), class = "data.frame")

我想从数据框中的每一列中获取第一个字符变量。例如,从上表中,我想检索“位置”和“大小”并将它们用作我的列标题。

由于表是动态生成的,因此我不确定字符串变量将出现在哪一行。

1 个答案:

答案 0 :(得分:3)

一种选择是遍历各列,并使用summarise_all获得第一个非NA元素

library(dplyr)
df1 %>%
  summarise_all(funs(.[!is.na(.)][1]))

或者对于sapply,使用相同的逻辑

sapply(df1, function(x) x[!is.na(x)][1])

或者在逻辑矩阵(which)上使用!is.na(df1),对数据进行子集处理,通过过滤出重复的列索引来获取每一列的第一个元素

ind <- which(!is.na(df1), arr.ind = TRUE)
df1[ind][!duplicated(ind[,2])]
#[1] "Location" "Size"