我是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属于我所拥有的两个类。任何人都可以帮我解决这个错误吗? 谢谢
答案 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))