在R中按多个约束进行分组

塞巴斯蒂安

目前,我尝试学习R,但是我坚持以下几点。我有这张桌子

                       material       V1
1:                       Silber 450.7886
2:                Kupfer-Nickel   0.0000
3:                Silver Tantal  26.9928
4: Bimetall (Silber - Niobium))   8.9925

现在,我想对包含一个可能性列表的一个字符串的所有行求和。我目前的做法是

merge <- c("Silver", "Silber")
materialsSplitted[any(sapply(merge, function(x) grepl(x, material, TRUE)))]

但问题是我得到与输入相同的表。

阿克伦

问题在于使用any包裹sapplysapply返回逻辑matrix

materialsSplitted[,sapply(merge, function(x) grepl(x, material, TRUE))]
#     Silver Silber
#[1,]  FALSE   TRUE
#[2,]  FALSE  FALSE
#[3,]   TRUE  FALSE
#[4,]  FALSE   TRUE

当我们用包裹时any,根据?any

该值是长度为1的逻辑向量。

因此,在这里,它具有TRUE / FALSE值并返回一个 TRUE

materialsSplitted[, any(sapply(merge, function(x) grepl(x, material, TRUE)))]
#[1] TRUE

它被回收为行索引以返回所有行。相反,我们需要检查每一行是否有字符串匹配。为此,我们可以使用Reduce

materialsSplitted[Reduce(`|`, lapply(merge, function(x) grepl(x, material, TRUE)))]
#                       material       V1
#1:                       Silber 450.7886
#2:                Silver Tantal  26.9928
#3: Bimetall (Silber - Niobium))   8.9925

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章