gpt4 book ai didi

r - 如何将数据框列名插入方程式 R?

转载 作者:行者123 更新时间:2023-12-02 06:33:39 25 4
gpt4 key购买 nike

我试图通过引用数据框列名称并将它们插入到方程式中来使一段代码更加灵活,而不是直接调用名称。以下示例有效,尽管我必须直接插入字段名称:

require(e1071)

class = c(0.25, 0.34, 0.55)
field1 = c(23, 33, 34)
field2 = c(44, 55, 32)

df = data.frame(class, field1, field2)

mysvm = svm(class ~ field1 + field2, data = df)

下面的例子不起作用,我也不知道为什么:

require(e1071)

class = c(0.25, 0.34, 0.55)
field1 = c(23, 33, 34)
field2 = c(44, 55, 32)

df = data.frame(class, field1, field2)

name1 = names(df)[2]
name2 = names(df)[3]

mysvm = svm(class ~ name1 + name2, data = df)

如何引用数据框中的第 2 列和第 3 列并将它们正确插入到方程中?

最佳答案

变量name1包含一个等于names(df)[2]的字符串,假设它是"foo"。当 svm 接收到一个带有 name1formula 对象时,它会搜索一个名为 name1 的对象并替换该对象以其值(value)。也就是说,svm 试图在长度为 1 的字符向量 "foo" 上“回归”变量 class,这当然不会没有意义。

这里的一种解决方法是将公式创建为字符串,然后在事后将其转换为公式。这是我不时使用的一个实用函数:

xyform <- function (y_var, x_vars) {
# y_var: a length-one character vector
# x_vars: a character vector of object names
as.formula(sprintf("%s ~ %s", y_var, paste(x_vars, collapse = " + ")))
}

关于r - 如何将数据框列名插入方程式 R?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25954361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com