R make.names在将列表转换为字符向量后返回意外结果
我试图从字符串列表中创建一个字符向量。我的最终目标是将其传递给R make.names在将列表转换为字符向量后返回意外结果,r,R,我试图从字符串列表中创建一个字符向量。我的最终目标是将其传递给make.names(),以便为数据帧创建列名 temp<-data.frame(col1=c("use this row as name"),col2=c("use this row as name 2")) make.names(temp[1,]) #fails make.names(c("hi","xxx!@#$")) #works as expected typeof(temp[1,]) typeof(c("hi","x
make.names()
,以便为数据帧创建列名
temp<-data.frame(col1=c("use this row as name"),col2=c("use this row as name 2"))
make.names(temp[1,]) #fails
make.names(c("hi","xxx!@#$")) #works as expected
typeof(temp[1,])
typeof(c("hi","xxx!@#$"))
typeof(as.character(temp[1,]))
make.names(as.character(temp[1,]))
以某种形式。只要列名是半可理解的,间距和其他格式就不重要。您可以只
取消列出数据框:
make.names(unlist(temp))
[1] "use.this.row.as.name" "use.this.row.as.name.2"
请记住,您的一些尝试失败了,因为temp
实际上是两列因素,再加上在列表上调用as.character
时的一些稍微不直观的行为。(请参见?as.character
)。您可以取消列出您的数据框:
make.names(unlist(temp))
[1] "use.this.row.as.name" "use.this.row.as.name.2"
请记住,您的一些尝试失败了,因为temp
实际上是两列因素,再加上在列表上调用as.character
时的一些稍微不直观的行为。(请参见?as.character
)。这非常有效,我在读取csv时必须添加stringsAsFactors=FALSE
,并使用unlist命令make.names(unlist(temp[1,])
这非常有效,我在读取csv时必须添加stringsAsFactors=FALSE
,并使用unlist命令make.names(unlist(临时工[1,])
make.names(unlist(temp))
[1] "use.this.row.as.name" "use.this.row.as.name.2"