R 在数据帧中使用语法困难的字符串作为列名
我使用的数据帧与下面的摘录类似:R 在数据帧中使用语法困难的字符串作为列名,r,string,syntax,dataframe,names,R,String,Syntax,Dataframe,Names,我使用的数据帧与下面的摘录类似: 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("Geograp
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))
我知道所使用的字符串对于make.names
进行有意义的转换非常混乱。我怎样才能迫使R以更有效的方式使用这些混乱的字符串?根据经验,我想:
您根本不需要使用
make.names
——您可以直接分配字符串。这在R中工作得非常好。当您尝试将名称用作R名称时,只需反勾引号(例如,$
运算符之后):
您根本不需要使用
make.names
——您可以直接分配字符串。这在R中工作得非常好。当您尝试将名称用作R名称时,只需反勾引号(例如,$
运算符之后):
在data.frame中使用
stringsAsFactors=F
,它会将列创建为char而不是factors。然后在上面写上名字
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)
df在data.frame中使用stringsAsFactors=F
,它会将列创建为char而不是factors。然后在上面写上名字
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)
df您可能需要unlist
即make.names(unlist(df[1,])
您获得X1:X5
的原因是df
列是因子
并且您在强制后获得了数字索引,随后通过在X
后面添加make.unique
@akrun,我建议您将其作为答案发布,因为建议的解决方案工作正常。您可能需要unlist
,即make.names(unlist(df[1,])
获得X1:X5
的原因是df
列是因子,并且强制后获得了数字索引,这是后来通过在X
中添加make.unique
@akrun来转换的,我建议您将其作为一个答案发布,因为建议的解决方案效果很好。@KonradRudloph感谢它的效果。稍微麻烦的是,在使用名称时需要添加``但这不是一项主要任务。@Konrad:当然,您也可以通过对data.frame进行子集设置来选择列,而不必使用$
,例如df[,“要使用的一些乱七八糟的字符串”]
@KonradRudloph感谢它的工作。稍微麻烦的是在使用名称时需要添加``但这不是一项主要任务。@Konrad:当然,您也可以通过子集data.frame来选择列,而不使用$
,例如df[,“要使用的一些凌乱字符串”]
names(df) = unlist(df[1,])
df$`Some messy string to be used`
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)