在R中,我有一个矩阵df和向量invalidAfterIndex.对于i第i行,我想设置与指数大于所有元素invalidAfterIndex[i]是NA.例如:
> df <- data.frame(matrix(rnorm(20), nrow=5))
> df
X1 X2 X3 X4
1 2.124042819 -0.2862224 0.1686977 2.14838198
2 0.777763004 0.2949123 -0.4331421 -0.81278586
3 -0.003226624 -0.2326152 -1.5779695 -1.23193913
4 0.165975919 -0.1879981 -0.8214994 -1.40267202
5 1.299195865 -0.9418217 -1.5302512 0.03164781
> invalidAfterIndex <- c(2,3,1,4,1)
Run Code Online (Sandbox Code Playgroud)
我想拥有:
X1 X2 X3 X4
1 2.124042819 -0.2862224 NA NA
2 0.777763004 0.2949123 -0.4331421 NA
3 -0.003226624 NA NA NA
4 0.165975919 -0.1879981 -0.8214994 -1.40267202
5 1.299195865 NA NA NA
Run Code Online (Sandbox Code Playgroud)
如果没有for循环,我怎么能这样做?
你可以做
is.na(df) <- col(df) > invalidAfterIndex
Run Code Online (Sandbox Code Playgroud)
或者,正如@digEmAll建议的那样
df[col(df) > invalidAfterIndex] <- NA
Run Code Online (Sandbox Code Playgroud)