为什么数据框列名在R中使用=和< - 不同

时间:2016-09-12 10:40:28

标签: r dataframe

任何机构都可以解释为什么以下两个数据框df1df2的列名不同

  df1 <- data.frame(a = 1:5, b = 11:15)
  df1
  #   a  b
  # 1 1 11
  # 2 2 12
  # 3 3 13
  # 4 4 14
  # 5 5 15

  df2 <- data.frame(a <- 1:5, b <- 11:15)
  df2
  #   a....1.5 b....11.15
  # 1        1         11
  # 2        2         12
  # 3        3         13
  # 4        4         14
  # 5        5         15

2 个答案:

答案 0 :(得分:1)

如果要将列名称设为a,b,则正确的语法应为

data.frame(a=1:5, b=1:5)

声明

data.frame(a <- 1:5, b <- 1:5)

R将其解释为好像没有列名,因此它会将整个表达式视为&lt; - 1:5&#39;作为第一个列名称,但有2个空格和3个非法字符&#39;&lt;&#39;&#39; - &#39;, &#39;:&#39;列名称中不允许使用,因此每个列都会更改为字符&#39;。&#39;因此您可以获得整个&#39; a .... 1.5&#39;作为第一列名称,第二列也是如此。

答案 1 :(得分:-1)

<-运算符不仅可以分配对象,还可以在父环境中创建它们,而不像=运算符

稍微重命名列:

df1 <- data.frame(a1 = 1:5, b1 = 11:15)



df1
#   a1  b1
# 1 1 11
# 2 2 12
# 3 3 13
# 4 4 14
# 5 5 15


#The objects are only created in the dataframee but not in environment  
# > exists(x = "a1")
#[1] FALSE
#> exists(x = "b1")
#[1] FALSE


#The objects are not only in created in the dataframe as well as in the environment

df2 <- data.frame(a2 <- 1:5, b2 <- 11:15)
df2
#   a2....1.5 b2....11.15
# 1        1         11
# 2        2         12
# 3        3         13
# 4        4         14
# 5        5         15

# > exists(x = "a2")
#[1] TRUE
#> exists(x = "b2")
#[1] TRUE