部分匹配行名称时的警告提示

11

我刚刚追踪到一个由于数据帧中行名称的部分匹配引起的错误。是否有一种方法可以使用[操作符禁用部分匹配或在使用全局匹配时生成警告?我知道可以通过[[操作符的exact = TRUE选项或使用options(warnPartialMatchDollar = TRUE)来进行配置$索引。

df <- data.frame(ab=1:4,cd=1:4)
rownames(df) <- paste0(letters[1:4],"a")
options(warnPartialMatchDollar = TRUE) 
df$a      # warning!
df["a",]  # no warnig

暂时还没有,但是_R_的下一个版本将会在数据框使用$进行部分匹配时发出警告:http://stat.ethz.ch/R-manual/R-devel/doc/html/NEWS.html - Hong Ooi
3
我惊讶地发现,数据框使用部分匹配来选择行,但不使用部分匹配来选择列:df[, "a"] 将出错。查看 [.data.frame 的代码,可以发现在 if (is.character(i)) 语句中确实使用了 pmatch - flodel
1个回答

0

我认为你无法禁用部分匹配,也没有一种适用于所有代码的一行解决方案。解决该问题的一个方法是使用整数/逻辑向量而不是字符来索引行,例如在您的代码中将df["a", ]替换为df[rownames(df) == "a", ](或者更好的方法是使用tibblerownames_to_column(df) %>% filter(rowname == "aa"))。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接