如何在String中将String转换为变量名

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转换为我可以在这里使用的变量名?或许我的方法在这里完全错了?

非常感谢!

克里斯

flo*_*del 6

你在找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)