2015-11-05 79 views
0

我有一個包含許多列的數據幀df。從這些,我提取兩個(col1col2),並使用df2 = data.frame(df$col1, df$col2)爲此。在R中創建數據幀時保留引號

它的工作原理:創建由這兩列組成的新數據框。但df$col1作出的字符串爲:

"test1" 
"test2" 

df2$col1由不是值(不知道如何稱呼他們)爲:

test1 
test2 

交叉口這些df$col1df2$col1產量零之間。如何將列保留爲新數據框中的字符串?

我試着加入stringsAsFactors = FALSE但沒有任何改變。

+0

您在數據幀中的每個列的數據類型,你嘗試'$ DF2的col1 < - as.character(DF2 $ COL1)'? – Gaurav

回答

1

'df'是您的數據框,您不想更改原始數據類型。即,您應該保留您的字符串數據類型。

所以基本上你應該從原始數據框中分出那些列,而不是使用'data.frame'創建一個新的數據幀。

> df2<-df[,c("col1","col2")] 

您可以通過

> str(df2) 
+0

這是一個值得記住的好教訓。謝謝! – Fabio

1

您的第一個數據框有col1設置爲字符。當您創建第二個數據幀時,此字符列被強制爲因子。這是一個可能的簡短證明。

> df1 <- data.frame(col1 = c("a", "b", "c"), col2 = 1:3) 
> df1$col1 
[1] a b c 
Levels: a b c 
> df1$col1 <- as.character(df1$col1) 
> df1$col1 
[1] "a" "b" "c" # this is what you have 
> 
> df2 <- data.frame(col1 = df1$col1) 
> df2$col1 
[1] a b C# coerced to factor 
Levels: a b c 
+0

它有效,但另一個更清潔,所以我接受了。不管怎麼說,還是要謝謝你! – Fabio