我有一个函数,试图对列进行一次热编码。我的问题似乎与R从函数传入列时如何解释列的字符串值有关。
function_notworking = function(data, col){
result = model.matrix(~col -1, data=data)
return(result)
}
# doesnt work
function_notworking(data=iris, col='Species')
但是,如果我这样做:
model.matrix(~Species -1, data = iris) it does work just fine.
我还尝试研究添加rlang :: sym()和!!在'col'前面,但这似乎也不起作用。
function_notworking = function(data, col){
col = rlang::sym(col) #
result = model.matrix(~col -1, data=data)
#or result = model.matrix(~!!col -1, data=data)
return(result)
}
希望了解如何将这样的列名传递给函数而不会出现问题。
如果我在代码周围使用expr(),似乎!! rlang :: sym(col)代码可以完成工作,但我被卡住了。
答案 0 :(得分:1)
我们需要做一个paste
function_working = function(data, col){
model.matrix(as.formula(paste0("~ ", col, -1)), data=data)
# or create the formula with glue
# model.matrix(formula(glue::glue("~{col} -1")), data = data)
}
function_working(data=iris, col="Species")
答案 1 :(得分:1)
尝试一下:
static void Main(string[] args)
{
string fileName = System.IO.Path.Combine(@"C:\Users\Amen\Downloads", "ADMQH20X.DBC");
string connectionString = $"Provider=VFPOLEDB;Data Source={fileName}";
DataTable tbl = new DataTable();
using(OleDbConnection con = new OleDbConnection(connectionString))
using(OleDbCommand cmd = new OleDbCommand("select * from myTable", con))
{
con.Open();
tbl.Load(cmd.ExecuteReader());
}
// do Something with datatable
}