2017-10-18 110 views
-1

我有以下的數據幀:使用提供的不同列名更改數據幀值R?

 Column1 Default_Val 
1   A   2 
2   B   2 
3   C   2 
4   D   2 
5   E   2 
... 
colnames: "Column1" "Default_Val" 
rownames: "1" "2" "3" "4" "5" 

該數據幀是我的功能的一部分,這個功能可以根據一些if的更改默認值。

我想泛化賦值過程,因爲我想支持此數據框的不同列名。

請指教如何更改默認值而不依賴列名?

這裏是我做過什麼至今:

df[Column1 == "A","Default_Val"] 
[1] 2 
df[Column1 == "A","Default_Val"] = 2 
df[Column1 == "A","Default_Val"] 
[1] 1 

我想要的東西,像概括:

t <- colnames(df) 
df[t[1] == "A", t[2]] = 7 

出於某種原因,這是行不通的(每次出現這種情況時我喜歡Python的: ))。

請指教。

+1

你試過'''colnames(df)''' – amrrs

+0

當然,它不起作用。這是一個錯字,我會編輯這個問題。 但是,如果你對我的問題有一個聰明的解決方案,那就太好了。在Python中它是小菜一碟,R一如既往地製造麻煩。 –

+0

如果我理解正確,你想分配一個基於列索引而不是列名的值,對吧? – amrrs

回答

1

我認爲這一定很簡單。請檢查這是否解決您的問題。

> df 
    Column1 Default_val 
1  A   1 
2  B   3 
3  A   4 
4  C   1 
5  D   4 
> df[2][df[1] == 'A'] = 3 
> df 
    Column1 Default_val 
1  A   3 
2  B   3 
3  A   3 
4  C   1 
5  D   4 
+0

非常感謝!將嘗試它! –