use*_*383 3 string variables r
我正在使用一堆货币数据.csv文件.这些.csv没有标题,我正在尝试添加,使用colnames函数.
colnames(variable_name) <- c('Date', 'Time', 'Open', 'Close', 'Volume')
Run Code Online (Sandbox Code Playgroud)
数据导入和列标题的分配应该使用for循环自动完成.数据框的名称是文件名的一部分.
file_names <- list.files()
for (i in 1:length(file_names)){
assign(substr(file_names,1,6)[i], read.csv(file_names[i], header=F))
colnames(variable_name) <- c('Date', 'Time', 'Open', 'Close', 'Volume')
}
Run Code Online (Sandbox Code Playgroud)
如何设置将variable_name输入到colnames函数中.我试过用:
colnames(substr(file_names,1,6)[i])
Run Code Online (Sandbox Code Playgroud)
但这会给我输入"AUDUSD",我需要输入没有引号的AUDUSD.
那么如何才能将String转换为我可以在这里使用的变量名?或许我的方法在这里完全错了?
非常感谢!
克里斯
你在找get.您的代码如下所示:
file_names <- list.files()
short_names <- substr(file_names, 1, 6)
for (i in seq_along(file_names)) {
assign(short_names[i], read.csv(file_names[i], header = FALSE))
colnames(get(short_names[i])) <- c('Date', 'Time', 'Open', 'Close', 'Volume')
}
Run Code Online (Sandbox Code Playgroud)
但似乎更容易使用函数中的col.names选项read.*,尝试:
assign(short_names[i], read.csv(file_names[i], header = FALSE,
col.names = c('Date', 'Time', 'Open',
'Close', 'Volume'))
Run Code Online (Sandbox Code Playgroud)
如果您不熟悉*apply系列函数,则可以将整个循环替换为:
mapply(assign, short_names, lapply(file_names, read.csv, header = FALSE,
col.names = c('Date', 'Time', 'Open',
'Close', 'Volume'))
Run Code Online (Sandbox Code Playgroud)