检查完美的平方并用R中的另一个值替换 数据

问题描述

我尝试了多种方法来检查R对象中的完美正方形,然后替换为0。下面是我尝试过的多行代码;代码必须为一行:

RealSet

解决方法

您可以将数字除以1,然后使用%%得到余数,然后将值与0进行比较。

sqrt(y)
#[1] 3.00 8.49 7.00 8.37 4.00 1.73 1.73 2.00 9.00 2.45 6.56 2.65 3.46 3.00 1.73

sqrt(y) %% 1 == 0
#[1]  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE

现在将这些值设置为0:

y[sqrt(y) %% 1 == 0] <- 0
#[1]  0 72  0 70  0  3  3  0  0  6 43  7 12  0  3

或者另一种方式:

y * +(sqrt(y) %% 1 != 0)
#[1]  0 72  0 70  0  3  3  0  0  6 43  7 12  0  3
,

我们可以使用roundceilingas.integer创建一个条件,将其转换为整数,并且由于涉及的精度,只有完全匹配的条件才返回TRUE。

y[sqrt(y) == round(sqrt(y))] <- 0

y[sqrt(y) == as.integer(sqrt(y))] <- 0

数据

y <- c(9,72,49,70,16,3,4,81,6,43,7,12,9,3)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...