相关疑难解决方法(0)

删除R中的常量列

当我收到此错误时,我正在使用prcomp函数

Error in prcomp.default(x, ...) : 
cannot rescale a constant/zero column to unit variance
Run Code Online (Sandbox Code Playgroud)

我知道我可以手动扫描我的数据,但R中是否有任何函数或命令可以帮助我删除这些常量变量?我知道这是一个非常简单的任务,但我从来没有遇到任何这样做的功能.

谢谢,

r constants

25
推荐指数
3
解决办法
2万
查看次数

如何使用单个值删除数据框列

假设我在R中有以下数据框:

df1 <- data.frame(Item_Name = c("test1","test2","test3"), D_1=c(1,0,1),
                  D_2=c(1,1,1), D_3=c(11,3,1))
Run Code Online (Sandbox Code Playgroud)

我想创建一个删除没有方差的列的函数(例如,在这种情况下,它会删除列,D_2因为它只有1个值)

我知道我可以手工检查,但实际上我的数据非常大,我想自动化它.任何的想法?

r dataframe

10
推荐指数
3
解决办法
6013
查看次数

删除有或没有NA的常量列

我试图让许多lm模型在函数中工作,我需要从data.table中自动删除常量列.因此,我想只保留具有两个或更多唯一值的列,不包括NA计数.

我尝试了在SO上找到的几种方法,但我仍然无法删除具有两个值的列:常量和NA.

我可重现的代码:

library(data.table)
df <- data.table(x=c(1,2,3,NA,5), y=c(1,1,NA,NA,NA),z=c(NA,NA,NA,NA,NA), 
d=c(2,2,2,2,2))

> df
    x  y  z d
1:  1  1 NA 2
2:  2  1 NA 2
3:  3 NA NA 2
4: NA NA NA 2
5:  5 NA NA 2
Run Code Online (Sandbox Code Playgroud)

我的目的是删除列y,z和d,因为它们是常量,包括y,当NA省略s 时只有一个唯一值.

我试过这个:

same <- sapply(df, function(.col){ all(is.na(.col))  || all(.col[1L] == .col)})
df1 <- df[ , !same, with = FALSE]


> df1
    x  y
1:  1  1
2:  2  1
3:  3 NA
4: …
Run Code Online (Sandbox Code Playgroud)

r data.table

10
推荐指数
1
解决办法
1057
查看次数

标签 统计

r ×3

constants ×1

data.table ×1

dataframe ×1