Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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
String 如何在R中将字符串转换为变量名_String_R_Variables - Fatal编程技术网

String 如何在R中将字符串转换为变量名

String 如何在R中将字符串转换为变量名,string,r,variables,String,R,Variables,我正在处理一堆currency data.csv文件。这些.csv没有标题,我正在尝试使用colnames函数添加标题 colnames(variable_name) <- c('Date', 'Time', 'Open', 'Close', 'Volume') 但这会给我输入“AUDUSD”,我需要输入不带引号的AUDUSD 那么,我如何才能将字符串转换成我可以在这里使用的变量名呢? 或者我的方法完全错了 非常感谢 克里斯我认为你没有得到你认为你得到的东西。下面是我的测试用例: Rga

我正在处理一堆currency data.csv文件。这些.csv没有标题,我正在尝试使用colnames函数添加标题

colnames(variable_name) <- c('Date', 'Time', 'Open', 'Close', 'Volume')
但这会给我输入“AUDUSD”,我需要输入不带引号的AUDUSD

那么,我如何才能将字符串转换成我可以在这里使用的变量名呢? 或者我的方法完全错了

非常感谢


克里斯

我认为你没有得到你认为你得到的东西。下面是我的测试用例:

Rgames> foo[1:6]
[1] "aggfrac.R"     "AJtranslate.c" "AJtranslate.R" "anaclock.R"   
[5] "apollo.R"      "askrm.R"      
Rgames> bar<-matrix(nr=2,nc=5)
Rgames> colnames(bar)<-substr(foo,1,6)[1:5]
Rgames> bar
     aggfra AJtran AJtran anaclo apollo
[1,]     NA     NA     NA     NA     NA
[2,]     NA     NA     NA     NA     NA
Rgames>foo[1:6]
[1] “aggfrac.R”“AJtranslate.c”“AJtranslate.R”“anaclock.R”
[5] “apollo.R”“askrm.R”
Rgames>bar列名称(bar)bar
阿波罗
[1,]NA-NA-NA
[2,]NA-NA-NA

您可以看到列名“恰到好处”。

您正在查找的
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')
}
如果您不熟悉*apply函数系列,您的整个循环可以替换为:

mapply(assign, short_names, lapply(file_names, read.csv, header = FALSE,
                                   col.names = c('Date', 'Time', 'Open',
                                                 'Close', 'Volume'))

我建议您使用列表。这样,事情就会变得美好干净:

file_names <- list.files()

data <- lapply (file_names, read.csv, header = FALSE)
names (data) <- substr(file_names, 1, 6)  # now you can access data$AUDUSD

## colnames for all data.frames
data <- lapply (data, `colnames<-`, c('Date', 'Time', 'Open', 'Close', 'Volume'))
(错误消息是反向翻译的)

不过,这是可行的:

    tmp <- get (variable_name) # in your case, rather do: tmp <- read.csv (...)
    colnames (tmp) <- letters [1:2]
    assign (variable_name, tmp)

tmp@Joshua:复制错误。OP正在寻找
get
,您将他指向
assign
@flodel:很公平,这里有一个答案。我们真的需要重新回答R文档(
?本例中为assign
)和R FAQ(7.21)示例中的问题吗?我认为问题在于
bar
是在函数中生成的。我认为
names(get(x))
不起作用;有个问题问到了,但我现在找不到。错误是赋值目标扩展到非语言对象。在任何情况下,
col.names
选项都是正确的方法。太好了!非常感谢您的快速回复。正是我所需要的谢谢你给我指点这个方法!因为我是新手,像这样的答案将为我指明正确的方向。
mapply(assign, short_names, lapply(file_names, read.csv, header = FALSE,
                                   col.names = c('Date', 'Time', 'Open',
                                                 'Close', 'Volume'))
file_names <- list.files()

data <- lapply (file_names, read.csv, header = FALSE)
names (data) <- substr(file_names, 1, 6)  # now you can access data$AUDUSD

## colnames for all data.frames
data <- lapply (data, `colnames<-`, c('Date', 'Time', 'Open', 'Close', 'Volume'))
data <- lapply (file_names, read.csv, header = FALSE, 
                col.names = c ('Date', 'Time', 'Open', 'Close', 'Volume'))
names (data) <- substr (file_names, 1, 6)  # now you can access data$AUDUSD
> colnames (get (variable_name)) <- c('Date', 'Time', 'Open', 'Close', 'Volume')
error: "target of assignment expands to non-language object")  
    tmp <- get (variable_name) # in your case, rather do: tmp <- read.csv (...)
    colnames (tmp) <- letters [1:2]
    assign (variable_name, tmp)