【发布时间】:2021-06-02 18:01:58
【问题描述】:
更新:
原来这是由不同类别的变量引起的。
非常感谢@r2evans,他在读取数据时通过将 interger64 转换为数字解决了这个问题。他的方法是有效的,但值得进一步研究的是他解决问题的逻辑。
出于保密原因,我删除了数据。
下面是上一题
我在我的数据表中绘制了所有数字克洛蒙的直方图。
head(dt) %>%
keep(is.numeric) %>%
gather() %>% na.omit() %>%
ggplot(aes(value)) +
facet_wrap(~ key, scales = "free") +
geom_histogram()
由于数据表太大,我选择了head()。
然后我遇到了这个错误:
if (length(unique(intervals)) > 1 & any(diff(scale(intervals))
那我让
eg <- head(dt)
write.csv2(head(dt), "eg.csv")
并保存在 github 上,例如 here。
然后
eg <- fread("https://raw.githubusercontent.com/Deborah-Jia/Complete_Analysis_da2/main/eg.csv")
eg %>%
keep(is.numeric) %>%
gather() %>% na.omit() %>%
ggplot(aes(value)) +
facet_wrap(~ key, scales = "free") +
geom_histogram()
我得到了正确的直方图!
当我保存数据并再次读取时发生了什么?或者有没有办法修复dt?
PS:dt 也是通过保存 csv 和从 fread 读取创建的。 当我使用
eg <- head(dt, 10000)
并保存在github,再读一遍。发生了同样的错误。
是不是因为我的 dt 太长(300 万行)并且有一些错误的行?
【问题讨论】:
-
您的第二个(工作)代码块包含
na.omit(),而您的第一个(失败)代码不包含。真正的比较将使调用之间的代码标准化。 (在不知道write.csv2之前的数据的情况下,不知道我们能确定问题是什么。) -
谢谢!我意识到我有一个错字。 tbh 两个块都有
na.omit. -
由于它适用于您和我们的 githubusercontent 数据,因此向我们提供 pre-
write.csv2数据可能会有所帮助。你能粘贴dput(head(dt))的输出吗? -
谢谢! dt 的较大部分在这里:raw.githubusercontent.com/Deborah-Jia/Complete_Analysis_da2/… 使用相同的绘图代码,你能看看这个错误吗?