首页 文章

SQL Server中的R:$运算符对原子向量无效

提问于
浏览
0

我正在尝试将一些工作的R脚本移植到SQL Server . 我有以下R代码:

titanic <- read.csv(titanicUri, header = TRUE)
titanic <- titanic[complete.cases(titanic),]
titanic$AgeGroup <- cut(titanic$Age, c(0,13,100), labels=c("Young","Old"))

我在SQL Server中创建了一个表并导入了数据 . 当我尝试像这样实现'cut'函数时:

EXECUTE sp_execute_external_script    
      @language = N'R'    
    , @script = N' 
        titanic <- InputDataSet;
        titanic <- titanic[complete.cases(titanic),];
        titanic$AgeGroup <- cut(titanic$Age, c(0,13,100), labels=c("Young","Old"));
        titanic <- data.frame(titanic);
        OutputDataSet <- titanic;
        '    
    , @input_data_1 = N' SELECT Name FROM Titanic;'    
    WITH RESULT SETS (([PassengerName] varchar(Max)));

我收到此错误(complete.cases工作正常)

titanic $ Age中的错误:$ operator对于原子向量Msg 39004,Level 16,State 20,Line 11无效在执行带有HRESULT 0x80004004的'sp_execute_external_script'期间发生'R'脚本错误 . 消息39019,级别16,状态1,行11发生外部脚本错误:titanic $ Age:$ operator对原子向量无效调用:source - > withVisible - > eval - > eval - > cut ScaleR中的错误 . 检查输出以获取更多信息 . eval中的错误(expr,envir,enclos):ScaleR中的错误 . 检查输出以获取更多信息 . 调用:source - > withVisible - > eval - > eval - > .Call执行暂停Msg 11536,Level 16,State 1,Line 11 EXECUTE语句失败,因为它的WITH RESULT SETS子句指定了1个结果集,但只有语句在运行时发送了0个结果集 .

提前致谢

1 回答

  • 1

    正如@TimGoodman所述,由于指定了 SELECT 查询,您的输入数据集是一列 . 只需展开列列表即可使用Age:

    @input_data_1 = N'SELECT * FROM Titanic;'
    

    考虑过指定输出数据集 . 见帮助mssqltips.com guide .

    @output_data_1_name = N'titanic'
    

相关问题