为什么R在从命令行运行时将变量作为因子加载,而在RStudio内部将其作为字符加载?

fivyi3re  于 2023-07-31  发布在  其他
关注(0)|答案(2)|浏览(97)

我正在R区加载一个CSV

df = read.csv(path_to_df, sep = ",", header = TRUE) 
samples = df$sample 
str(samples)

字符串
当我运行这个脚本时,我得到两个不同的数据结构,这取决于我是从RStudio内部还是命令行执行它。

#From inside RStudio
chr [1:200] "sample1" "sample2" "sample3" ...

#From the command line
Factor w/ 200 levels "sample1",..: 3 4 2 1 78 77 76 75 74 73 ...


这种差异会在我的脚本后面产生一些问题。现在,我添加了一些带as.character的磁带,以强制脚本始终将df$sample读取为samples = as.character(df$sample)
我的问题是:为什么R为什么要这么做有没有一个标准的方法可以让R默认为字符?

z4iuyo4d

z4iuyo4d1#

您的命令行R版本可能在4.0.0之前。
因此,在2019年图卢兹的R Core会议上,决定默认使用stringsAsFactors = FALSE,理想情况下从4.0.0版本开始。

htrmnn0y

htrmnn0y2#

根据注解,只需显式添加stringsAsFactors参数

df = read.csv(path_to_df, sep = ",", header = TRUE, stringsAsFactors = FALSE)

字符串

相关问题