求助:R的数据类型转换问题

COS论坛 | 统计之都 讨论区 软件应用 S-Plus & R语言 求助:R的数据类型转换问题

该主题包含 9 条回复,4个帖子,最后由  谢益辉7 年 之前 更新。

查看 10 个帖子 - 1 到 10(总计 10 个)
  • 作者
    帖子
  • 1 楼

    lqkybs
    普通会员

    运行下列命令,出现错误:

    > file<-read.table("wage.txt",header=TRUE,as.is = TRUE)
    > X<-file[,c(1,2)]
    > Y<-file[,3]
    > Coefficients<-solve(t(X)%*%X)%*%t(X)%*%Y
    Error in t(X) %*% X : requires numeric matrix/vector arguments
    >

    然后试图将矩阵转换成数值型,以进行下一步的数值运算,但又出现错误:
    > as.numeric(X)
    Error: (list) object cannot be coerced to 'double'

    不知道问题出在哪?请高手指点!

    把上述“wage.txt”文件转换成“aa.R”文件,其中第一行是列名称,其余是数字。
    想用source函数读数据,但出现错误,如下:

    > source("D:\\Program Files\\R-2.6.1\\myProgram\\aa.R")
    Error in source("D:\\Program Files\\R-2.6.1\\myProgram\\aa.R") :
    D:\Program Files\R-2.6.1\myProgram\aa.R: unexpected symbol at
    1: const     age
    >
    上述错误又是什么原因呢?谢谢!

    2 楼

    neige
    普通会员

    what does the as.is=TRUE do?

    3 楼

    Rtist
    普通会员

    the output of read.table is a data frame, which looks like a matrix, but far from a matrix.
    X=as.matrix(X) and Y=as.matrix(Y) or sth alike should work.

    BTW: for you problem, qr decomposition is much more stable to get solutions.

    4 楼

    谢益辉
    站长

    嗯,直观上来看Linear Model的系数用R写出来就是solve(t(x)%*%x)%*%x%*%y,但如rtist所说,实际上并不是用这么直白的方式算的,而是用QR分解。

    楼主的问题很明显了,wage.txt中含有字符。

    另外,你似乎没搞清楚source()究竟是干什么的(不是用来读数据的!)。

    to neige:as.is参数用来控制是否将字符数据转化为factor类型。

    5 楼

    lqkybs
    普通会员

    谢谢各位!
    to rist:用X=as.matrix(X) and Y=as.matrix(Y)命令,同样出现"Error in t(X) %*% X : requires numeric matrix/vector arguments"的错误.

    to 谢益辉:"wage.txt"文件中只有第一行含有字符,它代表各列的名称,因此使用“header=TRUE”。其余各行都是数字,是一个128*3的矩阵,没有缺失值。

    问题出在哪儿呢?
    你们是如何在R中导入矩阵数据进行矩阵运算的呢?

    我尝试过将“.txt”数据转换成“.csv”格式,然后用“read.csv”函数读取,这样可以进行矩阵运算。但是".csv"格式的要求有时候不太方便。

    数据输入输出的问题困饶我很多天了,自我感觉R语言的输入输出比较严格,不太灵活,有没有关于数据输入输出比较详细的书或资料呢?
    再次谢谢各位了!!

    6 楼

    lqkybs
    普通会员

    谢谢各位!
    to rist:用X=as.matrix(X) and Y=as.matrix(Y)命令,同样出现"Error in t(X) %*% X : requires numeric matrix/vector arguments"的错误.

    to 谢益辉:"wage.txt"文件中只有第一行含有字符,它代表各列的名称,因此使用“header=TRUE”。其余各行都是数字,是一个128*3的矩阵,没有缺失值。

    问题出在哪儿呢?
    你们是如何在R中导入矩阵数据进行矩阵运算的呢?

    我尝试过将“.txt”数据转换成“.csv”格式,然后用“read.csv”函数读取,这样可以进行矩阵运算。但是".csv"格式的要求有时候不太方便。

    数据输入输出的问题困饶我很多天了,自我感觉R语言的输入输出比较严格,不太灵活,有没有关于数据输入输出比较详细的书或资料呢?
    再次谢谢各位了!!

    7 楼

    Rtist
    普通会员

    you can try as.numeric(as.matrix()).
    next time, give a reproducible example.

    8 楼

    lqkybs
    普通会员

    谢谢rtist,是个不错的办法

    9 楼

    Rtist
    普通会员

    [b]引用第7楼[i]lqkybs[/i]于[i]2007-12-20 07:49[/i]发表的“”[/b]:
    谢谢rtist,是个不错的办法

    probably not as good as you believe…

    10 楼

    谢益辉
    站长

    其实报告一下str(X)大家就知道怎么回事了。

查看 10 个帖子 - 1 到 10(总计 10 个)

您必须先登录才能回复该主题。