有条件地删除向量中的元素

时间:2014-02-07 14:58:15

标签: r vector

我有一个名为Vector的字符向量,这是输出:

[1] "140222" "140207" "0" "140214" "140228" "140322" "140307" "140419" "140517" "140719" "141018" "150117" "160115"

我想有条件地删除与其他元素不同的唯一元素,在本例中为0

我试过这种方法,但似乎没有用:

for (i in 1:length(Vector) {
    if (nchar(Vector[i]) <=3) 
    {remove(Vector[i])}
}

错误是:

  

删除时出错(Vector [i]):         ...必须包含名称或字符串“。

2 个答案:

答案 0 :(得分:13)

首先,您不需要为此使用循环。这将做你想要的:

Vector <- Vector[nchar(Vector) > 3]

如果你想专门删除&#34; 0&#34;,你会这样做:

Vector <- Vector[Vector != "0"]

导致错误的原因是您在remove内的元素上使用Vector,而不是在对象上。换句话说,remove可以从内存中删除所有Vector,但不能删除它的元素。其他对象也是如此。

答案 1 :(得分:1)

如果您以交互方式使用R(否则不建议使用R - 请参阅此处:Why is `[` better than `subset`?),您也可以写:

subset(Vector, nchar(Vector) >3)