如何根据函数的应用从R数据帧中提取行?

时间:2016-10-27 18:58:23

标签: r dataframe subset

我有一个像这样的数据框:

  Items Years Counts  Blah   Bleh
1     A  1990   4565   ghf    kop
2     B  1990   4566   ecc    jde
3     A  1991   4567   sfg    iwx
4     D  1991   4568   ert    lwi
5     E  1991   4569   loi    xcz
6     B  1992   4570   kji    mnb

我希望能够基于通过函数传递项目从数据框中提取项目,年份和计数。我不想返回所有列例如:

function(word){length(word)>5)}

如果Item中的单词长度超过5,我想返回该值的3列,并留下Blah和Bleh列

到目前为止,我已经尝试了

result <- sapply(df$Items, 1, function)

但是它返回一个错误“dim(X)必须具有正长度”。执行此步骤后,我将不确定该去哪里,因为这只会返回行的索引,如果我是正确的,函数返回TRUE。

我正在与R斗争,因为我发现很难停止从python角度思考,我将不得不循环遍历所有内容。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

您可能希望投资学习表格数据存储&amp;操作界面,如data.tabledplyr。这是一个dplyr解决方案,它使用正则表达式select感兴趣的列:

library(dplyr)
library(stringr)

df_foo = read.table(
  textConnection(
    "  Items Years Counts  Blah   Bleh
1     A  1990   4565   ghf    kop
2     B  1990   4566   ecc    jde
3     A  1991   4567   sfg    iwx
4     D  1991   4568   ert    lwi
5     E  1991   4569   loi    xcz
6     B  1992   4570   kji    mnb"
  ),
  header = TRUE, stringsAsFactors = FALSE
)

df_foo %>% 
  select(matches("(.){5,}"))