【发布时间】:2016-12-19 21:03:17
【问题描述】:
我有一个名为 data 的数据框,列名是:
c("Server", "Date", "Host_CPU", "Used_Mem_Perc", "JVM1", "JVM2",
"JVM3", "JVM4", "JVM5", "JVM6")
我需要能够在 Host_CPU 和以 JVM 开头的列名之间创建一个 lm 模型。在这种情况下,它会是这样的:
lm(data=data, Host_CPU~JVM1+JVM2+JVM3+JVM4+JVM5+JVM6)
但有时,我不知道以 JVM 开头的列会有多少。我需要能够读取列名并构建 lm 模型。有什么想法可以在 R 中做到这一点吗?
【问题讨论】:
-
类似
as.formula(paste0("Host_CPU", "~", paste(nm[startsWith(nm, "JVM")], collapse = "+"))),其中nm是名称 -
查看
reformulate()函数以帮助构建公式。例如:x<-c("Server", "Date", "Host_CPU", "Used_Mem_Perc", "JVM1", "JVM2", "JVM3", "JVM4", "JVM5", "JVM6"); reformulate(grep("^JVM", x, value=T), "Host_CUP")
标签: r