你在推文中的补充说明还是不清不楚。
不过我猜你要的只是 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