我正在尝试使用csv文件的元素创建一个图,如下所示:
h1,h2,h3,h4
a,1,0,1,0
b,1,1,0,1
c,0,0,1,0
我尝试了以下代码,但收到错误消息
Error in data.frame(id = varieties, attr(mat, "row.names"), check.rows = FALSE) :
arguments imply differing number of rows: 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)
答案 0 :(得分:30)
您的data.frame mat
是矩形的(n_rows!= n_cols)。
因此,您无法从列和列表中生成data.frame
,因为data.frame中的每列必须具有相同的长度。
也许这足以满足您的需求:
require(reshape2)
mat$id <- rownames(mat)
melt(mat)
答案 1 :(得分:8)
我有相同的错误消息所以我google了一下我设法使用以下代码修复它。
df<-data.frame(words = unlist(words))
单词是一个字符列表。
这是为了防止其他人需要输出作为数据帧。
答案 2 :(得分:2)
虽然这不是你问题的直接答案,但我遇到了类似的问题,并且我以为我提到了这个问题:
我有一个实例,它为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时,它工作正常。以防其他有类似问题的人像我一样点击这篇文章。