使用提供的不同列名更改数据帧值R?

问题描述:

我有以下的数据帧:使用提供的不同列名更改数据帧值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

我认为这一定很简单。请检查这是否解决您的问题。

> 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

非常感谢!将尝试它! –