【发布时间】:2019-11-04 07:39:21
【问题描述】:
我从我的参与者那里导入了一些数据,其中我的一些变量是 F/M(女性/男性),当我导入它时,R 将只有 F 的向量转换为逻辑向量。然后当我将它们转换回字符时,F 已转换为 FALSE。如何避免这种 F 到 FALSE 的转换?
我知道我可以将所有 FALSE 转换回 F,但我想找到一个替代解决方案以避免我的代码看起来混乱。
这是我现在的代码,我怀疑问题出在lapply 内。由于该命令已包含在读取 csv 文件中,因此我无法真正提供完整的数据集。我给出了一个示例,说明 CSV 文件中数据的外观与 R 转换后的数据外观。实际数据集有更多列。
library(tidyverse)
csv_data <- data.frame(first = c(1, 1, 1, 1),
first_sex = c("F", "F", "F", "F"),
second = c(2, 2, 2, 2),
second_sex = c("M", "F", "F", "F"))
R_output_data <- data.frame(first = c(1, 1, 1, 1),
first_sex = c(F, F, F, F),
second = c(2, 2, 2, 2),
second_sex = c("M", "F", "F", "F"))
files <- list.files(path = "path to data",
pattern = "*.csv", full.names = T)
test_data <- lapply(files, read_csv) %>%
lapply(.,mutate_if, is.logical, as.character) %>%
bind_rows()
【问题讨论】:
-
stringsAsFactors=FALSE在您的read.(csv/tsv/table)通话中?测试csv_data %>% map(.,class) -
请尝试
as.isofread.csv以避免转换 -
stringsAsFactors=FALSE不是read_csv选项。col_types = ...应该可以工作。 -
您可以将所有列读取为字符并稍后转换它们。可以灵活地读取所有字符,将“f”和“m”更改为“female”和“male”,然后使用
type_convert或类似的东西更改列类型。要使用read_csv以字符形式读取所有内容,请添加col_types = cols(.default = "c")。 -
您能否添加用于导入数据的代码?
标签: r