2012-06-11 23 views

回答

5

你不能用矢量做它,因爲矢量只能包含一個類型。不過,你可以用列表來完成。

Data <- data.frame(col1=c("1","2","New","3","Gone"), stringsAsFactors=FALSE) 
List <- lapply(as.list(Data$col1), type.convert, as.is=TRUE) 
+0

+1 for'type.convert'我希望我早點知道這個函數。 – GSee

+0

謝謝約書亞! – uhohrondo

1

data.frame的列將始終是全部相同的類型。所以你不能在同一列中輸入字符串「New」和數字5。

然而,一個例子,讓你對你的方式:

x <- c('New', 1, 'Gone', 2) 

ifelse(is.na(as.numeric(x)), x, as.numeric(x)) 

取決於你在做什麼這可以擴展到適用於您的具體情況。

每約書亞的評論,你可以在ifelse語句中使用的功能:

ifelse(is.na(as.numeric(x)), sprintf('its a string %s', x), sprintf('its a number %f', as.numeric(x))) 

然而,對於處理這種情況通常的技術是約書亞他的回答概括。

+0

我不明白...你的'ifelse'結果和'x'是一樣的。我錯過了什麼? –

+0

你是正確的先生!我試圖說明一種將數字從混合向量中取出而不放入NA的潛在方法。而不是使用'as.numeric(x)',需要一個適當的函數來執行OP所需的任何處理。鑑於一個更完整的問題,我很樂意給出更好的答案。但這樣,它將有趣的探索部分留給OP。 – Justin

相關問題