为什么在R掩蔽中没有修复长度?那是
> v=c(1,2,3,4,5)
> mask=c(T,T,T,T)
> v[mask]
[1] 1 2 3 4 5
而不是
> v[mask]
[1] 1 2 3 4
我该怎么做?
答案 0 :(得分:3)
这是因为回收利用。如果向量具有不同的长度,则较短的向量按照指定的顺序进行再循环。
比较以下内容:
> mask=c(F)
> v[mask]
numeric(0)
> mask=c(T)
> v[mask]
[1] 1 2 3 4 5
> mask=c(T, F, T, F)
> v[mask]
[1] 1 3 5
在第一个示例中,F
被循环使用5次,因此不打印任何值 - 在第二个示例中则相反。
在第三个示例中,省略了2和4,因为它们使用F
编制索引,但是掩码被循环使用,为元素5提供T
修改强> 期望的结果是1,2,3,4? 尝试掩码< - c(T,T,T,T,F)
这就是允许声明
的内容v[v != 5]
因为这种比较是在整个载体上回收的