这个让我撕裂了我的头发。假设我有一个这样的数据框:
xx <- data.frame(A = c(1,2,3), B = c(4,5,6))
rownames(xx) <- c("p", "q", "r")
这给出了:
A B
p 1 4
q 2 5
r 3 6
我有R代码,可以导致一个空字符(字符(0)),用于尝试和子集df xx。如果我定义一个零字符:
z = character(0)
然后我用xx对xx进行子集化。
subset(xx, rownames(xx) != z)
我明白了:
[1] A B
<0 rows> (or 0-length row.names)
但我想要的是完整数组xx,因为没有空行名。为了完成这项工作,我必须将空字符转换为空字符串:
z <- ""
使用z&lt; - “”,当我的子集我得到整个df,这是我所期望的。显式捕获并将所有这些空字符转换为空字符串太笨拙了。怎么解决这个?
答案 0 :(得分:1)
尝试使用%in%
代替!=
:
subset(xx, !(rownames(xx) %in% z))