假设我有一个1000的长向量.
x=rnorm(1000,10,1)
Run Code Online (Sandbox Code Playgroud)
还有另一个矢量,
y<-c(1,7,10,16,29,50)
Run Code Online (Sandbox Code Playgroud)
在从矢量y指示的位置排除长度为4的块之后,我想要从"x"获得的矢量.
例如,在删除第(1-4)个组件,(7-10)组件,(16-19)组件,(29-32)和()之后,我想要一个来自"x"的向量50-53)"x"的分量.
我正在使用list:
x1=list()
for (k in 1:(length(y)-1))
{
x1[[k]]=x[-(y[k]:(y[k]+3)),]
}
x2=as.data.frame(x1)
Run Code Online (Sandbox Code Playgroud)
我正在考虑很长的向量(dim = 100k),所以上面的代码效率不高.有人可以建议任何更好的代码进行上述操作吗?
创建一组要删除的值,只创建一次子集:
x[-unlist(lapply(y, function(n) seq.int(n,n+3) ))]
Run Code Online (Sandbox Code Playgroud)
或者甚至是下面的,可能会慢一点,但会节省几个字符的输入:
x[-c(sapply(y, function(n) seq.int(n,n+3) ))]
Run Code Online (Sandbox Code Playgroud)