统一列名

时间:2019-11-18 13:54:59

标签: r tidyr

我试图将数据框df的所有列与|分开。

但是,对于新列的名称,我希望所有列名称以相同的方式合并在一起(例如S_n | S_s | S_b)。

这是我尝试并收到的错误消息Error: Must supply a symbol or a string as argument

S_n = c(2, 3, 5) 
S_s = c("aa", "bb", "cc") 
S_b = c(TRUE, FALSE, TRUE) 
df = data.frame(S_n, S_s, S_b)
unite(df, S_n|S_s|S_b, sep="|", remove=TRUE)

2 个答案:

答案 0 :(得分:2)

unite(df, "S_n|S_s|S_b", sep="|", remove=TRUE)。您需要在列名两边加上引号,因为它是非标准名称。 (标准名称不能包含._以外的其他符号。)

答案 1 :(得分:1)

通过基数R可以得到一个想法,

df[paste(names(df), collapse = '|')] <- do.call(paste, c(df, sep = '|'))


#  S_n S_s   S_b S_n|S_s|S_b
#1   2  aa  TRUE   2|aa|TRUE
#2   3  bb FALSE  3|bb|FALSE
#3   5  cc  TRUE   5|cc|TRUE