【问题标题】:View function showing all columns - makes R really slow显示所有列的视图函数 - 使 R 非常慢
【发布时间】:2018-07-25 07:33:56
【问题描述】:

由于某些奇怪的原因,当我使用 View() 函数或单击环境窗格中的数据框时,RStudio 会向我显示 data.frame 的所有列。 三周前我安装了新版本的 R(因为我有一台新的 Windows10 笔记本电脑),从那时起我就遇到了这个问题。

这真的很烦人,因为当必须显示超过 100 列时,R 变得非常慢。 代码随机示例

a=data.frame(replicate(1000,sample(0:1,10,rep=TRUE)))
View(a)

在过去,只显示前 100 列...

关于如何将其改回正常的任何想法?

【问题讨论】:

  • R 没有“数据查看器”或“环境窗格”。我猜你在使用 Rstudio 函数时遇到了困难,你误认为是 R。如果你希望得到知情的回应,你需要更具体地了解版本和代码。
  • 好的,对不起。我的意思是 RStudio。但这确实是我遇到的普遍问题。假设我有一个包含 1000 列的数据框,然后 View 函数应该只显示前 100 列。但它没有......它显示了所有这些。现在上面给出的示例代码。
  • 基本 R 中的 ?View 页面没有提及对显示的列数的默认限制(至少在我在 Mac 上运行的 R 3.4.3 版本中。所以除了不提供一个明确的问题,您现在显然是在表达基于不明确的期望。
  • View(df[,1:100]) 有什么问题?你可以很容易地在 R 中定义一个自定义的 View() 函数,它只做一个子集。
  • @42- 在我找到这个之前,我也不知道View 的限制:Using the Data Viewer - Restrictions and Performance

标签: r rstudio


【解决方案1】:

我遇到了超过 300000 行的长数据帧的问题。如果我View() df,RStudio 会话将冻结。不幸的是,我经常使用View() 来检查我的结果,但我经常忘记确保 df 不会太大。为了防止这种情况,我编写了上面 cmets 中推荐的函数。我花了一些时间弄清楚如何让名字像View() 一样出现,所以我想我会分享它。

RStudioView <- View
View <- function(x) {
  name  <- deparse(substitute(x))
  if ("data.frame" %in% class(x)) { 
    RStudioView(x[1:1000,], name)
    } else { 
    RStudioView(x) 
    }
}

基于找到的函数here。您可以将其更改为限制列而不是行,并设置最适合您的截止值。

【讨论】:

    【解决方案2】:

    您可以查看选定的列列表,如下所示:

    df <- data.frame(a = c(1,2), b = c(1,2), c = c(1,2))
    View(df[, c("a","b") ])
    

    如果渲染仍然需要很长时间,请查看您是否拥有最新的 RStudio 版本。最近有一个错误,即 RStudio 读取 Windows 网络驱动器很慢,它影响了 View() 函数。显然,它已在最新的 RStudio 版本中修复。

    顺便说一句,我很少使用 View() 了。我现在在 RMarkdown 笔记本中工作,它会自动以分页且易于阅读的格式呈现数据集的快照,该格式可以毫无问题地容纳大型数据集。而且我在这里没有遇到任何延迟问题。

    【讨论】:

    • 你还有这个关于 RStudio 读取 Windows 网络驱动器速度慢的讨论的链接吗?我遭受了很多痛苦,但我责怪我公司的网络。编辑:找到了! github.com/rstudio/rstudio/issues/1592
    • 但是为什么 View() 函数现在仍然显示所有列?因为它之前被限制为 100 列。我能以某种方式回到 View() 自动显示 100 列吗?
    猜你喜欢
    • 2020-02-23
    • 1970-01-01
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多