2014-02-05 73 views
0

我有一個簡單的問題。我有一個121列的數據框。列9:121需要是數字的,但是,當導入到R,它們的數值和整數和因子的混合物。列1:8需要保留字符。將部分數據幀更改爲字符,然後更改爲R的數字

我見過一些人使用循環,而其他人使用apply()。你認爲做這件事最優雅的方式是什麼?

非常感謝,

保羅中號

+0

在R中,通常使用apply函數系列更爲優雅。你有沒有嘗試過任何你可以放在這裏的代碼,或許向我們展示讀入R的數據表和列的類? – Ward9250

+0

謝謝。我試過:> df [,9:121] < - as.character(df [,9:121])> df [,9:121] < - as.numeric(df [,9:121])Error :(列表)對象不能被強制鍵入'double'真正關心的是讓9:121變成字符,然後變成數字。我並不擔心1:8。 – Paul

回答

0

請嘗試以下...的應用功能,可以遍歷要麼行,COLS,或兩者,一個數據幀和應用任何功能,所以確保所有列從9:121的數字,你可以做到以下幾點:

table[,9:121] <- apply(table[,9:121],2, function(x) as.numeric(as.character(x))) 
table[,1:8] <- apply(table[,1:8], 2, as.character) 

如果表是你讀入R.

簡單地說我符合規範的數據幀ify在apply函數中我想循環使用的表 - 在這種情況下,我們希望對錶的子集進行更改,然後我們指定數字2以指示列,最後給出as.numeric的名稱或as 。字符功能。賦值運算符然後用新的正確格式替換表中的舊值。

-EDIT:剛剛改變了第一行,因爲我記得如果你從一個因子轉換爲一個數字,你得到的是因子水平的整數,而不是你認爲首先需要的因子數量被轉換成字符,然後是數字,這可以通過在as.numeric中包裝as.character來完成。

+0

謝謝Ward9250! – Paul

0

當您在表中使用strinsAsFactors=FALSE時,則不會有任何因素。

相關問題