Re: [問題] lm()與資料輸出

作者: andrew43 (討厭有好心推文後刪文者)   2014-09-24 14:04:16
你在推文中的補充說明還是不清不楚。
不過我猜你要的只是 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
作者: koai (可笑的自以為...)   2014-09-24 14:09:00
推! ^^
作者: obarisk (OSWALT)   2014-09-24 15:33:00
其實程式不熟的人,不是很好瞭解expression和character的差別,特別是人門書又不會多加著墨
作者: andrew43 (討厭有好心推文後刪文者)   2014-09-24 16:36:00
以前學matlab時,大部份的教材對eval還蠻著重的。否則我也不會想到用eval硬幹。大多數R的教本沒強調這個.
作者: celestialgod (天)   2014-09-24 18:13:00
可以直接as.formula 不用用eval
作者: w2a3n4g5 (MORRIS.W)   2014-09-25 09:48:00
抱歉我真的努力把問題說清楚了QQ ,因為在學校沒學過R只學過C,java 但專題老師是統計專長的希望我們寫R所以只能慢慢摸索 , 不好意思~~~~~另外成功了!! 謝謝大家
作者: gsuper (Logit(odds))   2014-09-25 13:07:00
邪惡的貼上
作者: obarisk (OSWALT)   2014-09-25 14:58:00
matlab應該沒有formula這個型態XD

Links booklink

Contact Us: admin [ a t ] ucptt.com