为什么R Studio在处理大型 Dataframe 时会出现错误?

kqqjbcuj  于 2023-05-11  发布在  其他
关注(0)|答案(1)|浏览(239)

我昨天下载了一个新版本的R Studio(2023.03.0),现在遇到了一个错误。每当我试图从一个大的数据框中调用一个列(使用$)时,我都会得到以下错误:

Error in order(typeScores, scores) : argument lengths differ
In addition: Warning message:
In completions$type == .rs.acCompletionTypes$DATAFRAME & !completions$context %in% :
longer object length is not a multiple of shorter object length

下面的代码(由遇到同样错误的其他人为https://github.com/rstudio/rstudio/issues/13018构建的)重复了这个问题:

library(dplyr)

generate_dataframe <- function(n_rows, n_columns) {
  set.seed(42) # Setting the seed for reproducibility
  
  random_column_generator <- function(n_rows) {
    col_type <- sample(c("character", "numeric", "boolean", "factor"), 1)
    
    if (col_type == "character") {
      return(sample(c(LETTERS, NA), n_rows, replace = TRUE))
    } else if (col_type == "numeric") {
      return(sample(c(rnorm(n_rows, mean = 0, sd = 1), NA), n_rows, replace = TRUE))
    } else if (col_type == "boolean") {
      return(sample(c(TRUE, FALSE, NA), n_rows, replace = TRUE))
    } else if (col_type == "factor") {
      values <- sample(c(-1:1, NA), n_rows, replace = TRUE)
      labels <- c("Negative", "Neutral", "Positive")
      return(factor(values, levels = c(-1, 0, 1), labels = labels, exclude = NULL))
    }
  }
  
  random_string <- function(length) {
    return(paste(sample(c(LETTERS, letters), length, replace = TRUE), collapse = ""))
  }
  
  df <- data.frame(matrix(ncol = n_columns, nrow = n_rows))
  
  for (i in 1:n_columns) {
    df[[i]] <- random_column_generator(n_rows)
  }
  
  colnames(df) <- replicate(n_columns, random_string(sample(1:8, 1)))
  
  return(df)
}

# Generate random large dataframe
generated.df <- generate_dataframe(n_rows = 5e4, n_columns = 4e3)

如果您键入“generated.df$”,则会出现错误。我的问题是,为什么会出现这种错误?它似乎没有改变代码的运行方式--这意味着什么?最后,这是最新的R工作室中的一个bug吗?
谢谢!

k97glaaz

k97glaaz1#

这可能只是因为您的系统中没有安装足够的内存(RAM)。尝试使用较小的 Dataframe ,看看是否有帮助-在你用完并购买更多内存之前。
你也可以使用任务管理器(或top),看看你的内存使用情况。

相关问题