我有一个名为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)
metadata是一个数据帧,它是一种特殊类型的列表,由相等长度的向量组成.你只能as.factor()在矢量上使用.因此,您必须as.factor()对数据框中的每个向量进行分类.这可以使用以下lapply功能完成:
metadata <- data.frame(lapply(metadata, factor))
Run Code Online (Sandbox Code Playgroud)
这会将每列转换为一个因子(检查一下class(metadata[, 1])).整体结构metadata仍将是一个数据框架.