作者andrew43 (讨厌有好心推文後删文者)
看板R_Language
标题Re: [问题] lm()与资料输出
时间Wed Sep 24 14:04:16 2014
你在推文中的补充说明还是不清不楚。
不过我猜你要的只是 eval 硬干。
a <- rnorm(10)
b <- rnorm(10)
c <- rnorm(10)
d <- data.frame(a, b, c)
txt <- paste0(names(d)[1], "~", names(d)[2], "+", names(d)[3])
f <- eval(parse(text = txt))
summary(lm(f, data = d))
这个例子中,只要被读进去的 data frame 叫作 d,且其中栏位顺序不变,
则栏位的名字(在此例就是 a、b 和 c)是无所谓的。
重点在倒数第二列和第三列,看看是不是你要的吧。
如果我猜错你要的,请你把问题说明得更具体一点。
这里热心的人很多,
但请不要让热心的人花大部份的时间在猜发问者的问题到底是什麽啦。
※ 引述《w2a3n4g5 (MORRIS.W)》之铭言:
: - 问题: 当你想要问问题时,请使用这个类别
: [问题类型]:
: 程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来)
: [软体熟悉度]:
: 入门(写过其他程式,只是对语法不熟悉)
: [问题叙述]:
: 大家好我又来问问题了QQ
: 目前遇到的问题如下
: 先读入资料档 , 再透过commandline给定参数去决定自变数 ,应变数的位置
: 程式码大略如下
: read.table(data,"路径")
: y <- data[[k1]]
: x1 <- data[[k2]]
: x2 <- data[[k3]]
: y:应变数 , x1 , x2 皆为连续型自变数 , 不须转换成分类变数
: 其中k1,k2,k3行的名称分别为 weigh , A ,B
: output <- lm(y ~ x1 + x2,data)
: summary(output)
: 则会出现下列结果
: Estimate Std. Error t value Pr(>|t|)
: (Intercept) 26.23730 5.93517 4.421 1.08e-05 ***
: data[, k2] 0.01520 0.01138 1.336 0.1819
: data[, k3] -0.90883 8.18376 -0.111 0.9116
: 但我希望summary後的结果像这样
: Estimate Std. Error t value Pr(>|t|)
: (Intercept) 26.23730 5.93517 4.421 1.08e-05 ***
: A 0.01520 0.01138 1.336 0.1819
: B -0.90883 8.18376 -0.111 0.9116
: 就是如同 lm (weigh ~ A+B , data=data)的效果
: 请问我再 lm() 中 该怎麽写呢?
: 已经试过很多方式例如 names(data)[k1] 之类的方式lm当中 , 但还是失败了
: 也看过help(lm)了 ,不太了解内部放的y~x属於何种型态
: 因为档案是从外不读入所以行的名称不固定不能写死QQ
: 第二个问题是 , 假设我将档案输出了 , 程式码大略如下
: write.table(summary(output),"路径")
: 假设输出的是txt档 , 前面都会有数字1,2...... 就像下面那样
: "x"
: "1" ""
: "2" "Call:"
: "3" "lm(formula = data[, f] ~ data[, c1] + data[, c2] + data[, c3], "
: "4" " data = data
: 请问是否有办法再输出时去除掉那些数字呢?
: 谢谢各位QQ
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.128.117.75
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/R_Language/M.1411538660.A.C46.html
※ 编辑: andrew43 (140.128.117.75), 09/24/2014 14:06:54
1F:推 koai: 推! ^^ 09/24 14:09
2F:→ obarisk: 其实程式不熟的人,不是很好了解expression和character 09/24 15:33
3F:→ obarisk: 的差别,特别是人门书又不会多加着墨 09/24 15:33
4F:→ andrew43: 以前学matlab时,大部份的教材对eval还蛮着重的。 09/24 16:36
5F:→ andrew43: 否则我也不会想到用eval硬干。大多数R的教本没强调这个. 09/24 16:39
6F:→ celestialgod: 可以直接as.formula 不用用eval 09/24 18:13
7F:推 w2a3n4g5: 抱歉我真的努力把问题说清楚了QQ ,因为在学校没学过R 09/25 09:48
8F:→ w2a3n4g5: 只学过C,java 但专题老师是统计专长的希望我们写R 09/25 09:49
9F:→ w2a3n4g5: 所以只能慢慢摸索 , 不好意思~~~~~ 09/25 09:52
10F:→ w2a3n4g5: 另外成功了!! 谢谢大家 09/25 09:53
11F:推 gsuper: 邪恶的贴上 09/25 13:07
12F:→ obarisk: matlab应该没有formula这个型态XD 09/25 14:58