read.csv() 读取 data.frame OK readr::read_csv() for the same data.frame 失败,为啥?

Posted

技术标签:

【中文标题】read.csv() 读取 data.frame OK readr::read_csv() for the same data.frame 失败,为啥?【英文标题】:read.csv() reads the data.frame OK readr::read_csv() for the same data.frame fails, why?read.csv() 读取 data.frame OK readr::read_csv() for the same data.frame 失败,为什么? 【发布时间】:2022-01-13 22:58:05 【问题描述】:

下面,当我使用readr::read_csv() 读取我的data.frame 时,我的后续代码为yi 生成NA

但是当我使用 Base R 的 read.csv() 读取我的 data.frame 时,我的后续代码正确计算 yi

我想知道发生了什么事?

library(tidyverse)

d <- read_csv("https://raw.githubusercontent.com/fpqq/w/main/n.csv")
d2 <- read.csv("https://raw.githubusercontent.com/fpqq/w/main/n.csv")


d %>% group_by(study) %>%  # change `d` to `d2` and compare the results
  mutate(n = unlist(mean(c(nT,nC))),
         N = nT+nC,
         w = (nT+nC-2)*.8,
         icc = .15,
          yi = ifelse(assign_type=="group", yi*w, yi)
  ) %>% ungroup

【问题讨论】:

【参考方案1】:

默认情况下read_csv() 将空字符串转换为NA

试试 d &lt;- read_csv("https://raw.githubusercontent.com/fpqq/w/main/n.csv", na = c("NA"))

现在两个数据集应该是一样的。

【讨论】:

好吧,在我自己的代码中,我使用 readxl::read_xlsx("d.xlsx", na = "NA") 在本地读取数据,但它再次不起作用。

以上是关于read.csv() 读取 data.frame OK readr::read_csv() for the same data.frame 失败,为啥?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法使用 read.csv 从字符串值而不是 R 中的文件读取?

当值有太多有效数字时,read.csv 将数字转换为字符/因子

当行不消失时删除data.frame中的所有空列和行

R data.frame

R data.frame

将嵌套列表的单个元素从因子转换为字符