【问题标题】:What does the error "arguments imply differing number of rows: x, y" mean?错误“参数意味着不同的行数:x,y”是什么意思?
【发布时间】:2014-11-26 15:49:14
【问题描述】:

我正在尝试从 csv 文件的元素创建一个图,如下所示:

h1,h2,h3,h4
a,1,0,1,0
b,1,1,0,1
c,0,0,1,0

我尝试了以下代码,但收到错误提示

data.frame 中的错误(id = 品种,attr(mat,“row.names”),check.rows = FALSE): 参数暗示不同的行数:8、20

我的示例数据有 8 列和 20 行(不包括标题和行名称)。我尝试在网上查找并尝试实施一些修复,但问题仍然存在。非常感谢任何帮助。

mat <- read.csv("trial.csv", header=T, row.names=1)
varieties = names(mat)
df <- data.frame(id=varieties,attr(mat, "row.names"), check.rows= FALSE)

【问题讨论】:

  • 哪一行会报错?您可以逐行运行脚本并报告结果吗?可以分享文件吗?
  • @MylesBaker 'df
  • 这仅在mat 是方阵 (nrows = ncols) 时有效。你想达到什么目标?也许list 更适合您的需求...或查看cbind.fill here
  • 我想为一个矩形矩阵创建一个图,显示每个元素在数据中的分布情况@EDi
  • 也许你正在寻找这个require(reshape2); mat$id &lt;- rownames(mat); melt(mat)

标签: r csv matrix plot ggplot2


【解决方案1】:

您的 data.frame mat 是矩形 (n_rows!= n_cols)。

因此,您不能从列名和行名中创建 data.frame,因为 data.frame 中的每一列的长度必须相同。

也许这足以满足您的需求:

require(reshape2)
mat$id <- rownames(mat) 
melt(mat)

【讨论】:

  • 为什么会出现这个问题?我从来没有遇到过矩形数据框的问题。老实说,我怀疑它们中的任何一个都曾有与列相同数量的行。
【解决方案2】:

我有同样的错误信息,所以我去谷歌搜索了一下,我设法用下面的代码修复了它。

df<-data.frame(words = unlist(words))

words 是一个字符列表。

这以防万一其他人需要将输出作为数据框。

【讨论】:

    【解决方案3】:

    虽然这不是对您问题的直接回答,但我刚刚遇到了类似的问题,并认为我已经提到过:

    我有一个实例,它正在为 data.frame (递归搜索的结果)实例化一个新的(无疑是非常低效的)记录,它给了我同样的错误。

    我有这个:

    return(
      data.frame(
        user_id = gift$email,
        sourced_from_agent_id = gift$source,
        method_used = method,
        given_to = gift$account,
        recurring_subscription_id = NULL,
        notes = notes,
        stringsAsFactors = FALSE
      )
    )
    

    原来...它是 = NULL。当我切换到 = NA 时,它工作正常。以防万一有类似问题的其他人像我一样点击这篇文章。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-16
      • 2013-10-26
      • 2020-01-21
      相关资源
      最近更新 更多