Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R get()和assign()不能与colnames()一起使用_R - Fatal编程技术网

R get()和assign()不能与colnames()一起使用

R get()和assign()不能与colnames()一起使用,r,R,我的目标是在数据帧上设置列名。此数据帧的名称存储在变量名_of_表中 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(...) firs

我的目标是在数据帧上设置列名。此数据帧的名称存储在变量名_of_表中

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<-"

name\u of_table您可以使用
library(data.table)


使用
assign
以编程方式读取CSV文件并分配给帧很少是一个好主意;如果您是动态执行此操作,最好将它们读入,因为在执行此操作时,通常会对列表中的所有帧执行相同的操作。我会将data.frame放入列表中,然后进一步,在一些选择示例中,使用
get
assign
可能有意义,但通常表明数据管理方法存在缺陷。这可能是一种主观的方法,但我认为你会发现大多数R爱好者(和-ADA)在大多数情况下都会避免使用它们。但要回答你的问题,我认为错误很明显:不要将
get
嵌套在
`colnames中,因为你已经在使用
assign
,你可以执行
assign(name\u of_table,`names
colnames(names(name_of_table)) <- first_level_header
#Throws error: Error in `colnames<-`(`*tmp*`, value = c("one", "two", "three", "four", : attempt to set 
#'colnames' on an object with less than two dimensions
table_13 = data.table(1:5, 1:5, 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