R 对数据框应用逻辑检查重命名列

R 对数据框应用逻辑检查重命名列,r,R,我有一个R数据框,看起来像: x<-c(1:10) df<-data.frame(x) df['y']<-(df['x']>5) 让我们尝试各种列替换,看看会发生什么: > x<-c(1:4) ; df<-data.frame(x) ; > df x 1 1 2 2 3 3 4 4 版本2,按自己的方式完成任务,单方括号: > x<-c(1:4) ; df<-data.frame(x) ; > df['y']=df$

我有一个R数据框,看起来像:

x<-c(1:10)
df<-data.frame(x)
df['y']<-(df['x']>5)

让我们尝试各种列替换,看看会发生什么:

> x<-c(1:4) ; df<-data.frame(x) ;
> df
  x
1 1
2 2
3 3
4 4
版本2,按自己的方式完成任务,单方括号:

> x<-c(1:4) ; df<-data.frame(x) ;
> df['y']=df$x>2
> df
  x     y
1 1 FALSE
2 2 FALSE
3 3  TRUE
4 4  TRUE
> df['x']
  x
1 1
2 2
3 3
4 4
> df[['x']]
[1] 1 2 3 4
单方括号为您提供了一个数据帧,从另一个数据帧分配部分数据帧似乎覆盖了名称。使用双括号仅获取列值,因此名称不会更改:

> x<-c(1:4) ; df<-data.frame(x) ;
> df['y']=df[['x']]>2
> df
  x     y
1 1 FALSE
2 2 FALSE
3 3  TRUE
4 4  TRUE
一个额外的逗号可以解决这一问题,因为使用两个索引进行索引可以得到一个向量,一个索引(单方括号)可以得到一个数据帧:

> df[,'x']
[1] 1 2 3 4
> df['x']
  x
1 1
2 2
3 3
4 4

df[,'y']
带有逗号?da。非常感谢。对不起,我的原始代码有一个错误。FixedI在我的原始代码中有一个错误。现在修复了,它应该是
([df['x']>5)
而不是
(x>5)
当我这样做时,它给了我的数据帧一个新的第二列,名为
x
。复制者:
xThanks。这是一个非常好的答案。很高兴知道我没有疯。
> x<-c(1:4) ; df<-data.frame(x) ;
> df$y=df['x']>2
> df
  x     x
1 1 FALSE
2 2 FALSE
3 3  TRUE
4 4  TRUE
> df['x']
  x
1 1
2 2
3 3
4 4
> df[['x']]
[1] 1 2 3 4
> x<-c(1:4) ; df<-data.frame(x) ;
> df['y']=df[['x']]>2
> df
  x     y
1 1 FALSE
2 2 FALSE
3 3  TRUE
4 4  TRUE
> n="y"
> df[[n]]
[1] FALSE FALSE  TRUE  TRUE
> df[,'x']
[1] 1 2 3 4
> df['x']
  x
1 1
2 2
3 3
4 4