如何删除值在特定阈值内的数据帧中的行?
x y
1 -0.111111e-15 0.111111e-15
2 -1.111112e-15 1.111112e-15
3 -1.111111e-15 1.111111e-15
Run Code Online (Sandbox Code Playgroud)
例如,如果我将阈值设置为1e^-8,则将删除第二行或第三行.
我用一点实用函数rd.txt输入控制台输出:
> dat <- rd.txt(" x y
+ 1 -0.111111e-15 0.111111e-15
+ 2 -1.111112e-15 1.111112e-15
+ 3 -1.111111e-15 1.111111e-15"
+ )
> dat[ ! duplicated( round(dat,-8) ),]
x y
1 -1.11111e-16 1.11111e-16
Run Code Online (Sandbox Code Playgroud)
(我的第一个版本带有减号而不是否定运算符是不正确的.)如果所有列都不是数字,则需要进行一些修改.如果是这种情况,那么请发布一个适当的测试示例,最好使用dput() - 输出而不是控制台输出,这通常是模糊的.
使用来自其他响应者的示例(已修改为传递请求的对象类):
dfrm<-data.frame(id=letters[1:3],x=c(-1/9/1e15,-1/9/1e14,-1/9/1e14),
y=c(1/9/1e15,1/9/1e14,1/9/1e14))
dfrm[ ! duplicated( round( dfrm[ , sapply(dfrm, is.numeric)],8)), ]
id x y
1 a -1.111111e-16 1.111111e-16
Run Code Online (Sandbox Code Playgroud)