【发布时间】:2017-05-17 01:47:40
【问题描述】:
我列出了向量中的所有数据帧,并通过从向量 (list_all) 中调用它们来对数据帧执行不同的操作。我正在尝试使用第一行为每个数据框分配 colnames。
#table_1
V1 V2 V3 V4 V5
1: caffeine ACHE Adora1 ADORA1 Adora2a
2: 7.25- 7.25 15.00- 44.00 44.00- 49.00 9.40- 48.10
#table_2
V1 V2
1: paraxanthine daf-12
2: NA
#table_3
V1 V2 V3 V4
1: theophylline Adora1 ADORA1 Adora2a
2: 0.70- 26.00 0.00- 20.00 1.31- 25.30
list_all <- c("table_1","table_2","table_3") # this list was derived from previous code of 60 lines
n_drugs <- 3
drug_names <- c("caffeine","paraxanthine","theophylline")
output_final <- matrix(ncol=n_drugs , nrow=1)
for (t in 1:length(list_all)){
output_final[t] <- paste(drug_names[t],"output_final", sep = "_")
names_all <- c()
names_all[t,] <- unlist(c(as.character(get(noquote(list_all[t]))[1,]))) #saving colnames in 'names_all'
names_all[t,1] <- c("drug_name") # change first column name
assign(output_final[t],setnames(get(noquote(list_all[t])),colnames(get(noquote(list_all[t]))),names_all[t,]))
}
当我逐行运行此代码时,它可以工作,但是当我创建函数并运行该函数时,我得到了错误
“get(noquote(list_all[t])) 出错:找不到对象‘NA’”。帮帮我
【问题讨论】:
-
colnames 出现在数据框的第一行通常表明您应该在第一次读取数据时执行
read.csv(..., header=TRUE)之类的操作,并且在那个阶段修复比尝试更容易做任何你在这里尝试的事情。 -
请提供无效的代码
-
看起来你正在尝试在另一种编程语言中有意义的东西,但不一定是 R......关于你正在尝试做的事情的更多细节会有所帮助
-
@HubertL 这是在给定表上不起作用的代码
-
@mr_swap:从您的示例数据看来,问题在于您如何读取数据。你有没有探索过任何
read.<filetype>()函数的选项来检查它是否可以更明智地处理标题?