我正在处理类似于以下摘录的数据框:
df <- data.frame(A=c("Some messy string to be used",222,0),
B=c("Very important ? indicator from 2001", 888, 44),
C=c("001 This variable / makes no sense", 888, 44),
D=c("Geography", 1, 2))
我想将第一行中的值用作列名,我使用下面的代码:
names(df) <- make.names(df[1,])
不幸的是,语法以 Xn 格式生成名称,如下所示:
> names(df)
[1] "X3" "X3" "X1" "X3"
据我所知,使用的字符串会让make.names
变得有意义。 如何强制R以更有效的方式使用这些杂乱的字符串?根据经验,我想:
答案 0 :(得分:3)
您根本不需要使用make.names
- 您可以直接分配字符串 。这在R中完全正常。当您尝试将它们用作R名称时(例如在$
运算符之后),只需要反引号引用名称:
names(df) = unlist(df[1,])
df$`Some messy string to be used`
答案 1 :(得分:1)
在data.frame中使用stringsAsFactors = F
,它会将列创建为char而不是因子。然后在上面做名字。
df <- data.frame(A=c("Some messy string to be used",222,0),
B=c("Very important ? indicator from 2001", 888, 44),
C=c("001 This variable / makes no sense", 888, 44),
D=c("Geography", 1, 2),stringsAsFactors = F)
names(df) <- make.names(df[1,])
names(df)