2017-10-20 67 views
0

我正在使用SQL Server R服務,並使用查詢填充我的@ input_data_1。當列爲varchar時,結果數據框默認爲係數。如何獲得結果作爲字符數據類型?SQL Server R服務 - 查詢結果爲字符而不是因子

存儲過程

CREATE PROCEDURE myProc 
AS 
EXEC sp_execute_external_script 
@language = N'R' 
,@script=N' 
df <- InputDataSet 
x <- str(df) 
OutputDataSet <- as.data.frame(x) 
' 
@input_data_1 = N'SELECT * FROM MyTable' 
--will result in factor data type for both col1 and col2. 

MyTable的

col1 (varchar) | col2 (varchar) 
------------------------------- 
    text1  | text4 
    text2  | text5 
    text3  | text6 
+0

你可以使用as.character轉換它,這是一個可以接受的答案嗎? – User632716

+0

我可以但我不想一個接一個做。目前我有大約15列,如果我有50列,接下來呢? – addicted

回答

1

這裏是一個reproduceable答案。

如果您可能有許多列,並且不想單獨更改它們,則需要使用apply函數。

在下面的示例中,我製作了一個表df1(字符串作爲字符),將這些字符轉換爲因子(df2),然後在df3中將它們轉換回來(這是您感興趣的部分)。

library(tidyverse) 
df1 <- tribble(~col1, ~col2, 
       "text1", "text2", 
       "text3", "text6", 
       "text1", "text2" 
) 

df2 <- as.data.frame(sapply(X = df1, FUN = as.factor)) 

df3 <- as.data.frame(sapply(X = df2, FUN = as.character), stringsAsFactors=FALSE)