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

时间:2013-11-07 16:59:38

标签: r

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

metadata <- read.csv(file="metadata.csv", header=T, stringsAsFactors=T)

这样就可以很好地加载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

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

as.factor(metadata)

这给了我以下错误:

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

2 个答案:

答案 0 :(得分:5)

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

metadata <- data.frame(lapply(metadata, factor))

这会将每列转换为一个因子(通过class(metadata[, 1])检查)。 metadata的整体结构仍然是数据框。

答案 1 :(得分:2)

read.csv将数据放入data.frame

您无法将data.frame转换为factor这是非常基本的R内容。

这就像你试图通过将计算机转换为PDF来将一堆.doc文件更改为PDF。它没有意义。

错误是询问“您是否在列表中调用了排序?”是的,你有。 as.factor拨打sort,您的data.frame就是一个列表。