如何在R中加载CSV作为因子

raf*_*man 0 r

我有一个名为metadata.csv的文件,我想加载到R并转换为一个因子.我开始:

metadata <- read.csv(file="metadata.csv", header=T, stringsAsFactors=T)
Run Code Online (Sandbox Code Playgroud)

这加载CSV就好了.我在这里打印出元数据:

> metadata
                   Filename  Genre   Date Gender
1           Austen_Emma.txt Social  Early Female
2           Bronte_Eyre.txt Social Middle Female
3  Dickens_Expectations.txt Social   Late   Male
4            Eliot_Mill.txt Social   Late Female
5            Lewis_Monk.txt Gothic  Early   Male
6     Radcliffe_Italian.txt Gothic  Early Female
7  Shelley_Frankenstein.txt Gothic Middle Female
8        Stoker_Dracula.txt Gothic   Late   Male
9      Thackeray_Vanity.txt Social Middle   Male
10       Trollope_Vicar.txt Social Middle   Male
Run Code Online (Sandbox Code Playgroud)

现在我想将它转换为一个因素:

as.factor(metadata)
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误:

Error in sort.list(y) : 'x' must be atomic for 'sort.list'
Have you called 'sort' on a list?
Run Code Online (Sandbox Code Playgroud)

Chr*_*den 5

metadata是一个数据帧,它是一种特殊类型的列表,由相等长度的向量组成.你只能as.factor()在矢量上使用.因此,您必须as.factor()对数据框中的每个向量进行分类.这可以使用以下lapply功能完成:

metadata <- data.frame(lapply(metadata, factor))
Run Code Online (Sandbox Code Playgroud)

这会将每列转换为一个因子(检查一下class(metadata[, 1])).整体结构metadata仍将是一个数据框架.

  • +1.一种更简洁的方法:`metadata [] < - lapply(元数据,因子)` (4认同)