r-将数据帧的一行子集从数字中删除零位小数

r-将数据帧的一行子集从数字中删除零位小数,r,R,数据 给定一个数据帧 df <- data.frame("id"=c(1,2,3), "a"=c(10.0, 11.2, 12.3),"b"=c(10.1, 11.9, 12.9)) > df id a b 1 1 10.0 10.1 2 2 11.2 11.9 3 3 12.3 12.9 > str(df) 'data.frame': 3 obs. of 3 variables: $ id: num 1 2 3 $ a : num 10

数据

给定一个数据帧

df <- data.frame("id"=c(1,2,3), "a"=c(10.0, 11.2, 12.3),"b"=c(10.1, 11.9, 12.9))

> df
  id    a    b
1  1 10.0 10.1
2  2 11.2 11.9
3  3 12.3 12.9

> str(df)
'data.frame':   3 obs. of  3 variables:
 $ id: num  1 2 3
 $ a : num  10 11.2 12.3
 $ b : num  10.1 11.9 12.9   
我“假设”这是有意的,但如何对第一行进行子集,使其保留
.0
部分

注释

将两行子集化将保留
.0

> df[1:2,]
  id    a    b
1  1 10.0 10.1
2  2 11.2 11.9

我假设您理解这是一个如何打印数字的问题,而不是R如何存储值的问题。无论如何,您可以使用
格式
来确保打印数字:

> format(df[1,], nsmall = 1)
   id    a    b
1 1.0 10.0 10.1
> format(df[1,], nsmall = 2)
    id     a     b
1 1.00 10.00 10.10
此行为的原因与正在打印的行数无关。R将尝试显示尽可能少的小数。但为了提高显示效果,列中的所有数字都将具有相同的位数:

> df2 <- data.frame(a=c(1.00001, 1), b=1:2)
> df2
        a b
1 1.00001 1
2 1.00000 2

我假设您理解这是一个如何打印数字的问题,而不是R如何存储值的问题。无论如何,您可以使用
格式
来确保打印数字:

> format(df[1,], nsmall = 1)
   id    a    b
1 1.0 10.0 10.1
> format(df[1,], nsmall = 2)
    id     a     b
1 1.00 10.00 10.10
此行为的原因与正在打印的行数无关。R将尝试显示尽可能少的小数。但为了提高显示效果,列中的所有数字都将具有相同的位数:

> df2 <- data.frame(a=c(1.00001, 1), b=1:2)
> df2
        a b
1 1.00001 1
2 1.00000 2

的确我似乎忘记了R的基本知识!的确我似乎忘记了R的基本知识!