如何解决get和Assign不适用于colnames
我的目标是在数据框中设置列名。该数据帧的名称存储在变量name_of_table中。
name_of_table<-"table_13"
assign(name_of_table,read.csv("table_13_air_vehicle_risks_likelihood_and_cost_effects.csv",header=FALSE))
# This works fine,like table_13 <- read.csv(...)
first_level_header <- c("one","two","three","four","five")
colnames(get(name_of_table)) <- first_level_header
# Throws error:
#Error in colnames(get(name_of_table)) <- first_level_header :
# could not find function "get<-"
很明显,如果我用 table_13 代替 get(表的名称),则此方法有效。 如果相反,我尝试:
colnames(names(name_of_table)) <- first_level_header
#Throws error: Error in `colnames<-`(`*tmp*`,value = c("one",: attempt to set
#'colnames' on an object with less than two dimensions
早些时候我曾指向这篇文章:R using get() inside colnames
但是eval(parse(paste0(“ colnames(”,name_of_table,“) file(filename,“ r”)中的错误:无法打开连接
我不理解涉及SetNames的建议。
如果获得/分配不是正确的方法,我深表歉意,我当然希望以“正确”的方式进行此操作,我感谢指导。
解决方法
您可以使用library(data.table)
table_13 = data.table(1:5,1:5,1:5)
setnames(get(name_of_table),first_level_header) # N.B. also works for a data.frame
# one two three four five
# 1: 1 1 1 1 1
# 2: 2 2 2 2 2
# 3: 3 3 3 3 3
# 4: 4 4 4 4 4
# 5: 5 5 5 5 5
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。