R,导入列名

时间:2017-10-22 00:16:04

标签: r

我有一个带有列名的csv文件(myNames)。它是1 x 66.我想使用这些名称重命名我在另一个数据帧中的66列。我正在尝试使用colnames(df)[]<-(myNames),但我得到了错误的结果。我试图使用as.vector,as.array,as.list这样做,但没有成功。

  1. 有没有更直接的方法将csv文件读入数组? 或
  2. 如何从我的数据框中获取可以在colnames()中使用的数组?
  3. 这是myNames:

    v1     v2     v3       v4    v5     v6      v7
    Tom    Dick   Harry   John   Paul   George  Ringo
    

    我想让Tom,Dick,Harry在mydata中创建新的列名。

1 个答案:

答案 0 :(得分:1)

试试这个:

library(tidyverse)

# Reproducible example
df <- ("Tom    Dick   Harry   John   Paul   George  Ringo")
df <- read.table(text = df)

# Change column names
names(df) <- as.matrix(df[1, ])

# Remove row 1
df <- df[-1, ]

# Convert to a tibble
df %>% 
  as_tibble() %>% 
  mutate_all(parse_guess) %>% 
  glimpse()

上面的代码返回:

Observations: 0
Variables: 7
$ Tom    <chr> 
$ Dick   <chr> 
$ Harry  <chr> 
$ John   <chr> 
$ Paul   <chr> 
$ George <chr> 
$ Ringo  <chr> 

你可以把它变成一个函数:

rn_to_cn <- function(dataframe){
  x <- length(colnames(dataframe))
  y <- length(unique(matrix(dataframe)))
  if(x > y){
    stop("Can't have duplicate column names.")
  } else {
    message("It worked!")
  }
  names(dataframe) <- as.matrix(dataframe[1, ])
  dataframe <- dataframe[-1, ]
  dataframe %>% 
    as_tibble() %>% 
    mutate_all(parse_guess)
}

然后这样做:

rn_to_cn(df)

# A tibble: 0 x 7
# ... with 7 variables: Tom <chr>, Dick <chr>, Harry <chr>, John <chr>,
#   Paul <chr>, George <chr>, Ringo <chr>