在执行主成分分析(PCA)之前,我希望对数据进行缩放
,但不幸的是,我发现有些列包含NA值,而且某些列的方差为0。因此,我想删除这些列。以下是我的数据示例:
df <- data.frame( v1 = 1:10 , v2 = rep( 0 , 10 ) , v3 = sample( c( 1:3 , NA ) , 10 , repl = TRUE ), v4 = 1:10 )
我希望同时删除
v2
和v3
列。如何实现?我知道如何删除包含
NA
的列,然后删除方差为0的列。colsd <- apply(df, 2, sd)
df2 <- df[!is.na(colsd)]
colsd2 <- apply(df2, 2, sd)
df3 <- df2[!colsd2 == 0]
但是看起来有些冗余,我只想知道是否可以更高效地实现,也许只需要一行代码。感谢任何回复。
NA
值,var
将返回NA
。我曾考虑过一种更明确的更长的可能性,但这真是太聪明了。 - thelatemailvar(c(1.0000000000000001,rep(1,1e6))) == 0
返回TRUE
。但是这种微小的差异对于 PCA / FA 来说将是无用的。 - thelatemail