【问题标题】:'x' must be numeric for histogram of row of dataframe对于数据帧行的直方图,“x”必须是数字
【发布时间】:2015-12-13 07:26:45
【问题描述】:

我有一个数据框df,我想为它制作一些行的直方图。 我可以选择带有df["row1",] 的行,然后我得到(显示 114 列中的 4 列):

     X3432_re  X232_fa  X212_lf  X634_fv
row1 5.1       4.3      3.7      3.7

但是,当我尝试 hist(df["row1",]) 时,我得到了 'x' must be numeric 错误。我试过hist(as.vector(df["row1",])),但遇到了同样的问题。如何制作数据框行的直方图?

【问题讨论】:

  • 试试hist(as.numeric(df["row1",]))
  • 试试hist(t(df["row1",]))。如果值确实是数字,它将起作用。

标签: r dataframe histogram


【解决方案1】:

df["row1",] 仍将是一个 data.frame,因此默认情况下 hist(df["row1",]) 将不起作用(因为 hist 需要一个向量)。

现在假设您的所有列都可以强制转换为数字,我怀疑这会起作用,因为将创建一个数字原子向量:

hist(as.numeric(df["row1",]))

【讨论】:

  • 其实就算所有列都是数字也行不通。 is.numeric 应该几乎总是在数据框(或数据框的单行)上返回 FALSE
  • 这很好用:as.numeric(data.frame(a=c(1,2),b=c(1,2),c=c(1,2))['1',]) [1] 1 1 1。我目前正在处理因子、整数和双精度数的 data.frame 也是如此。
  • 不,我不是说您的解决方案不起作用,我的意思是 hist(d[1,]) 不起作用即使所有列都是数字,这使您的第一段有点误导。显然,如果您明确强制转换为数字,它将正常工作。
  • 没关系,我只是澄清hist(d[1,]) 不起作用这一事实并不自动意味着某些列不是数字,仅此而已。
  • @joran 是的,你完全正确。我会说得更好。谢谢你。
猜你喜欢
  • 2011-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-08
相关资源
最近更新 更多