操作

2013-10-22 20 views
0

我不想在一個循環中執行的操作,我的數據是這樣的操作

dfU[4:7] 
     vNeg neg pos vPos 
1  0 35 28 0 
2  0 42 26 0 
3  0 77 59 0 
4  0 14 24 0 
5  0 35 45 0 
6  0 17 12 0 
7  0 31 23 0 
8  0 64 52 1 
9  0 15 17 0 
10  0 21 29 0 

當我執行某些操作是這樣,但得到一個錯誤的結果可能只是因爲轉換我嘗試與變換也不過得到一個錯誤,不是爲了因素

b<-as.numeric(((as.numeric(dfU[,4])*-5)+(as.numeric(dfU[,5])*-2)+(as.numeric(dfU[,6])*2)+(as.numeric(dfU[,7])*5))) 
    b 
    [1] -14 -32 -16 18 8 -8 -18 -7 6 14 24 -9 0 

錯誤有意義可能正因爲如此,當我轉換爲NUMER整數IC

我想在一個數據幀的第8列是爲分數,我想避免循環,是他們對列進行操作的任何更好的辦法,在這個方向上的任何幫助,謝謝。

+1

你可以看下[這裏](http://stackoverflow.com/questions/3418128 /如何對轉換-α-因子到一個整數數字 - 無需-A-失信息)。還要了解'str'。 – Henrik

+0

請使用'dput(dfU)'提供您的數據。問題是你有要嘗試執行數字操作的因子類型向量。 – Thomas

+0

如何創建data.frame?你讀過嗎? – agstudy

回答

1

最好的是避免有第四個。列作爲因素,如果這不是你想要的。 儘管如此,解決方法是使用as.numeric(as.character())。假設 「a」 是你的第4列,你的情況是這樣的:

> a <- as.factor(c(rep(0,7),1,rep(0,2))) 
> a 
[1] 0 0 0 0 0 0 0 1 0 0 
Levels: 0 1 
> as.numeric(a) 
[1] 1 1 1 1 1 1 1 2 1 1 

而變通辦法:

> as.numeric(as.character(a)) 
[1] 0 0 0 0 0 0 0 1 0 0 
+0

嘿謝謝,它的工作原理,但在這裏尋找更有效的方法。 – Aashu