在R中创建数据框的问题

时间:2014-11-26 23:28:53

标签: r dataframe

我是R的新手。我正在尝试读取R中的两组数据以进一步用于支持向量机分析,但我收到一个错误,我无法克服它:

> x=read.csv("X_values_training.csv",header=F)
> dim(x)
[1]   66 5400
> y=read.csv("Y_values_training.csv",header=F)
> dim(y)
[1]  1 66
> dat =data.frame(x=x,y=as.factor(y))
Error in sort.list(y) : 'x' must be atomic for 'sort.list'
Have you called 'sort' on a list?

如上所示,我正在阅读66个观察5400个矢量。数据" y"是1还是-1属于我所拥有的两个类。任何人都可以帮我解决这个错误吗? 谢谢

1 个答案:

答案 0 :(得分:0)

即使y只有一行,它仍然是一个数据框。你可以说因为(1)它来自read.csv和(2),因为它有一个dim属性。您无法在整个数据框中调用as.factor

m <- mtcars[1,]
dim(m)
# [1]  1 11
data.frame(m = as.factor(m))
# Error in sort.list(y) : 'x' must be atomic for 'sort.list'
# Have you called 'sort' on a list?
is.atomic(m)
# [1] FALSE

在分解和创建新列之前,请尝试unlist - y

data.frame(m = as.factor(unlist(m)))
#          m
# mpg     21
# cyl      6
# disp   160
# hp     110
# drat   3.9
# wt    2.62
# qsec 16.46
# vs       0
# am       1
# gear     4
# carb     4

但是,由于y只有一行,因此您可以使用scan。这可能也有效。

y <- scan("Y_values_training.csv", what = character(), sep = ",")
dat <- data.frame(x = x, y = as.factor(y))