用 R 中的列制作列表

Making a List out of a Column in R

我正在尝试从我的 DataFrame 的特定列中列出一个列表。

但如果要添加到列表中,它应该取决于另一列。

例如,如果数据帧是:

names <- c('Word1','Word2','Word3')
quant <- c(5, NA, 10)

my.data <- data.frame(names, quant)

现在我只想列出带有数量的单词,而忽略带有“NA”的单词。 有没有一种聪明而快速的方法来做到这一点? 这种情况下的最终列表应该是 (Word1, Word3)

非常感谢您的帮助。我是 R 的初学者,我唯一的选择是循环遍历数据帧并检查每个值。

我们可以使用 complete.casesna.omit 删除所有 NA。使用 complete.cases 我们可以部分 select 列。请参阅 my.data[complete.cases(my.data[1,1]),]my.data[complete.cases(my.data[1:2,2]),]

my.data[complete.cases(my.data),]
  names quant
1 Word1     5
3 Word3    10

并且更快:

library(microbenchmark)

microbenchmark(
  na.omit(my.data)$names,
  my.data[complete.cases(my.data),]
)

Unit: microseconds
                               expr min    lq   mean median   uq   max neval cld
             na.omit(my.data)$names  46 46.95 50.457  47.60 49.4  90.9   100   b
 my.data[complete.cases(my.data), ]  22 22.80 25.522  23.65 24.3 133.5   100  a 

这是您要找的吗?

na.omit(my.data)

  names quant
1 Word1     5
3 Word3    10

或者可以将 subsetis.na 一起使用并取反 (!)

 subset(my.data, !is.na(quant))
  names quant
1 Word1     5
3 Word3    10