如何在向量中分隔整数和双精度?

时间:2018-03-12 16:23:19

标签: r data.table

我使用fread包中的data.table读取数据框的一列。向量中大约一半的数字具有双精度,而另一半只有整数精度。

head(data$value)
#[1] 3 1.2 3.1 1 1.0 5

我希望通过精度将矢量分成两个但是当我使用typeof函数时,所有值都以双精度值的形式返回,因此我不能用它来区分两者。

输出将产生两个单独的向量,例如:

single <- c(3,1,5)
double <- c(1.2,3.1,1.0)

3 个答案:

答案 0 :(得分:4)

假设你的向量是x,你可以将舍入的值与原始值相同,即

.join()

答案 1 :(得分:2)

为了区分1.0和1,我有了一个想法(虽然可能不那么有才):使用正则表达式将它们分开。

single <- data$value[!grepl("\\.", data$value)]
double <- data$value[grepl("\\.", data$value)]

在这种情况下,data$value首先被强制转换为grepl中的字符,然后按字母方式搜索字面点,为子集data$value生成逻辑值。

答案 2 :(得分:1)

尝试这样的事情:

single<-data[grepl("[.]",data$value),"value"]
double<-data[!grepl("[.]",data$value),"value"]

single
[1] 1.2 3.1 1.0
Levels: 1 1.0 1.2 3 3.1 5
> double
[1] 3 1 5
Levels: 1 1.0 1.2 3 3.1 5