【问题标题】:Print list without line numbers in R在R中打印没有行号的列表
【发布时间】:2013-09-19 20:50:50
【问题描述】:

我想在 R 中打印一个不带行号的列表。

我尝试了cat 命令,但它不适用于列表。

有人有什么建议吗?

    GROUP    SEX INCOME STATE    n  mean
11       1   Male      1    AL  159 26.49
12       2 Female      1    AL  204 26.64
13       3   Male      2    AL  255 27.97
14       4 Female      2    AL  476 29.06

要使用的示例数据:

foo <- structure(list(GROUP = 1:4, 
                      SEX = structure(c(2L, 1L, 2L, 1L),
                                      .Label = c("Female", "Male"),
                                      class = "factor"),
                      INCOME = c(1L, 1L, 2L, 2L), 
                      STATE = structure(c(1L, 1L, 1L, 1L), .Label = "AL", 
                                        class = "factor"), 
                      n = c(159L, 204L, 255L, 476L), 
                      mean = c(26.49, 26.64, 27.97, 29.06)),
                 .Names = c("GROUP", "SEX", "INCOME", "STATE", "n", "mean"), 
                 class = "data.frame", row.names = 11:14)

【问题讨论】:

  • 你能举个例子来说明你的代码或者你想展示什么吗?
  • 在我们等待并澄清问题时,您显示的是(或看起来像)数据框,而不是列表。是您不想打印的11, 12, 13, 14 吗?另外,为了帮助Stack Overflow 人群,您能否在示例数据之后将dput(foo) 的输出包括在您的问题中?,foo 是您粘贴的R 对象吗?这将提供一些具体的工作。
  • @GavinSimpson 为了保护这个特定数据集的隐私,我宁愿不打印出整个数据集。将来会使用 dput
  • @pmagunia 我的意思只是为了你展示的 sn-p。例如,如果您的对象是 foo 并且您只需要前 4 行,那么 dput(foo[1:4, ]) 会有所帮助。碰巧我通过将四行读入 R、更改行名和 dput() 它为你做到了。

标签: r


【解决方案1】:

您只想要参数row.names = FALSE 吗?例如

> print(foo, row.names = FALSE)
 GROUP    SEX INCOME STATE   n  mean
     1   Male      1    AL 159 26.49
     2 Female      1    AL 204 26.64
     3   Male      2    AL 255 27.97
     4 Female      2    AL 476 29.06

这里使用?print.data.frame 方法。

【讨论】:

  • 好一个,不知道那个选项:) 比我的解决方案好得多
  • 这比使用正则表达式要容易得多!谢谢
  • @pmagunia 也就是说,我怀疑将数据框写入文件/连接,然后通过 awk 进行管道传输,根据上下文,删除行名会很容易。表的printed 表示可能不是在所有上下文中都需要的。但很高兴您发现答案在这种情况下很有帮助。
  • @GavinSimpson,如果列表列表如下:C=list(listA = list(1:3, structure(1:9, .Dim = c(3L, 3L)), 4:9), listB = list(c("t1", "t2", "t3"), structure(c("p1", "p2"), .Dim = 2:1))),您会怎么做,在这种情况下,print(C,row.names=FALSE) 不起作用!
【解决方案2】:

这样的事情应该可以工作:

apply(l, 1, function(x){cat(x); cat("\n")})

【讨论】:

  • 这个apply(l, 1, function(x){cat(x, sep = '\t'); cat("\n")}) 可以工作(打印.tsv 格式化表格)。
猜你喜欢
  • 2023-04-01
  • 2012-07-29
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-12
  • 1970-01-01
相关资源
最近更新 更多