我有一个空行的数据集.我想删除它们:
myData<-myData[-which(apply(myData,1,function(x)all(is.na(x)))),]
Run Code Online (Sandbox Code Playgroud)
它运作正常.但是现在我想在我的数据中添加一个列并初始化第一个值:
myData$newCol[1] <- -999
Error in `$<-.data.frame`(`*tmp*`, "newCol", value = -999) :
replacement has 1 rows, data has 0
Run Code Online (Sandbox Code Playgroud)
不幸的是它不起作用,我不明白为什么,我无法解决这个问题.当我使用以下方法一次删除一行时,它工作正常:
TgData = TgData[2:nrow(TgData),]
Run Code Online (Sandbox Code Playgroud)
或类似的东西.
当我只使用前13000行时,它也可以工作.
但它不适用于我的实际数据,有32.000行.
我做错了什么?这对我来说似乎毫无意义.
可能重复:
R - 在data.frame中删除具有NA的行
如何在其中一列中使用NA值快速删除数据框中的"行"?
所以
x1 x2
[1,] 1 100
[2,] 2 NA
[3,] 3 300
[4,] NA 400
[5,] 5 500
Run Code Online (Sandbox Code Playgroud)
应该导致:
x1 x2
[1,] 1 100
[3,] 3 300
[5,] 5 500
Run Code Online (Sandbox Code Playgroud) 可能重复:
删除R中数据文件的空行
如何从矩阵或数据框中删除行,其中行中的所有元素都是NA?
所以要从中得到:
[,1] [,2] [,3]
[1,] 1 6 11
[2,] NA NA NA
[3,] 3 8 13
[4,] 4 NA NA
[5,] 5 10 NA
Run Code Online (Sandbox Code Playgroud)
对此:
[,1] [,2] [,3]
[1,] 1 6 11
[2,] 3 8 13
[3,] 4 NA NA
[4,] 5 10 NA
Run Code Online (Sandbox Code Playgroud)
因为na.omit的问题是它删除了任何 NAs的行,所以会给我这个:
[,1] [,2] [,3]
[1,] 1 6 11
[2,] 3 8 13
Run Code Online (Sandbox Code Playgroud)
到目前为止我能做的最好的是使用apply()函数:
> x[apply(x, 1, function(y) !all(is.na(y))),]
[,1] [,2] [,3]
[1,] 1 6 11
[2,] 3 8 13 …Run Code Online (Sandbox Code Playgroud) r ×3