【问题标题】:cat function in RR中的cat函数
【发布时间】:2021-11-19 02:51:18
【问题描述】:

我有一个这样的数据框:

>result
       x     y
1     82    10
2     82    90
3     82    10
4     82    50
5     82    10
6     82    50
7     82    10
8      6     7
9      6     7
10     6     7
11     6     7
12     3     7
13     3     7
14     2     7

我想使用cat 函数以标准格式打印数据框。我在这里使用了一个简单的条件。如果 x

apply(result, 1, function(x) {
  if( x[1] < x[2]) cat(paste0( "(", x ,")\n" )) else cat(paste( "(", " " ,")\n" ))
})

> 
(   )
(82)
 (90)
(   )
(   )
(   )
(   )
(   )
(6)
 (7)
(6)
 (7)
(6)
 (7)
(6)
 (7)
(3)
 (7)
(3)
 (7)
(2)
 (7)

我得到的是 (x) (y) 而不是 (x, y)。输出应该是这样的

(   )
(82, 90)
(   )
(   )
(   )
(   )
(   )
(6, 7)
(6, 7)
(6, 7)
(6, 7)
(3, 7)
(3, 7)
(2, 7)

--数据

structure(list(x = c(82L, 82L, 82L, 82L, 82L, 82L, 82L, 6L, 6L, 
6L, 6L, 3L, 3L, 2L), y = c(10L, 90L, 10L, 50L, 10L, 50L, 10L, 
7L, 7L, 7L, 7L, 7L, 7L, 7L)), class = "data.frame", row.names = c(NA, 
-14L))

【问题讨论】:

    标签: r dataframe cat


    【解决方案1】:

    我们可能需要折叠或使用toString

    invisible(apply(result, 1, function(x) {
      if( x[1] < x[2]) cat(paste0( "(",toString( x) ,")\n" )) else cat(paste( "(", " " ,")\n" ))
    }))
    

    -输出

    (   )
    (82, 90)
    (   )
    (   )
    (   )
    (   )
    (   )
    (6, 7)
    (6, 7)
    (6, 7)
    (6, 7)
    (3, 7)
    (3, 7)
    (2, 7)
    

    【讨论】:

    • 我也在考虑使用toString。我们如何在两个值之间获得“,”?另外,最后如何删除 null?
    • @Dihan cat 没有返回值
    • @Dihan, toString 只是paste(..., collapse=", ")
    • @Dihan 只需用invisible 包裹即可删除NULL
    【解决方案2】:

    如果您想保留 data.frame,您可以执行以下操作:

    library(dplyr)
    
    df %>% 
      mutate(print = if_else(x < y, paste0( "(", x,",",y,")" ),"( )"))
    
        x  y   print
    1  82 10     ( )
    2  82 90 (82,90)
    3  82 10     ( )
    4  82 50     ( )
    5  82 10     ( )
    6  82 50     ( )
    7  82 10     ( )
    8   6  7   (6,7)
    9   6  7   (6,7)
    10  6  7   (6,7)
    11  6  7   (6,7)
    12  3  7   (3,7)
    13  3  7   (3,7)
    14  2  7   (2,7)
    

    【讨论】:

    • 谢谢。这看起来不错
    猜你喜欢
    • 2020-09-20
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    • 2022-11-12
    相关资源
    最近更新 更多