确定向量中的所有字符串是否相同

时间:2017-07-05 19:05:24

标签: r

我正在尝试检查滚动窗口中的字符串是否彼此完全相同,如果是,则在新列中报告相同的值,如果不相同,则报告NA。我的数据看起来像这样:

param()

我想检查LAME列是否匹配。

我希望它看起来像下面这样:

Sample_ID   distance    Sr87Sr86    LAME
2014_0385   669          0.70868    SAL
2003_0141   702          0.7079     SAL
2008_0089   644          0.70818    SAL
2013_6380   452          0.70813    SAL
2006_0328   1226         0.70838    FW
2014_0106   784          0.7086     SAL
2006_0028   1750         0.70853    SAL
2007_0241   462          0.70621    SAL
2011_0313   393          0.70645    SAL
2010_0233   880          0.70688    SAL

其中我使用左对齐的3行滚动窗口。特定窗口大小或左对齐并不重要,重点是当它滚动时,它会检查窗口中的所有值是否相同。

我目前尝试的是以下内容:

Sample_ID   distance    Sr87Sr86    LAME    LAME_roll
2014_0385   669          0.70868    SAL     SAL
2003_0141   702          0.7079     SAL     SAL
2008_0089   644          0.70818    SAL     NA
2013_6380   452          0.70813    SAL     NA
2006_0328   1226         0.70838    FW      NA
2014_0106   784          0.7086     SAL     SAL
2006_0028   1750         0.70853    SAL     SAL
2007_0241   462          0.70621    SAL     SAL
2011_0313   393          0.70645    SAL     SAL
2010_0233   880          0.70688    SAL     SAL

其中all.identical是一个自定义函数,执行以下操作:

data$LAME_roll = rollapply(data$LAME, width = 3, align = "left", FUN = all.identical, partial = TRUE, fill = NA)

这似乎有效,但如果您要求查看LAME_roll为{NA}且all.identical = function(x) { if(length(unique(x)) > 1) { NA } else { unique(x) } } 的行,则会返回所有值均为NA的行,包括行名称。这是怎么回事?有没有更好的方法来实现这一目标?或者有没有办法摆脱那些NA行?查看数据框时,只有在尝试查看数据子集时才会显示它们。

0 个答案:

没有答案