2015-04-03 69 views
-1

我想用varname的不同值运行约50次。Rhelp:for循环和参数

Sls_Other_$varname_y1_12 = diff (Sls_Other_$varname_data [,4] , lag=12) 

$ varname应该由for循环的每次迭代的顺序列表中的关键字替换。我试着写这样的事情 -

for (i in 1:nrow(VarCodes)) { 
    nm<-VarCodes[i] 
    Sls_Other_$nm_y1_12 = diff (Sls_Other_$nm_data [,4] , lag=12) } 

nrow(VarCodes)= 50

我敢肯定$纳米是一个错误的参考。我在网上搜索,但没有找到任何答案。任何帮助将不胜感激。

+0

的'$'函数不评价它的RHS参数的部分。需要使用“[[”。 – 2015-04-03 20:42:19

回答

1

如果你真的相信这成功:

Sls_Other_$varname_y1_12 = diff (Sls_Other_$varname_data [,4] , lag=12) 
# Since the Sls_Other_$varname_data [,4] looks wrong if Sls_Other_ is a dataframe 

然后可能是一些沿着这些路线:

for (i in 1:nrow(VarCodes)) { 
    nm<-VarCodes[i] 
    Sls_Other_[[paste0(nm, "_y1_12")]] <- 
        diff (Sls_Other_[[paste0(nm, "_data")]] [,4] , lag=12) } 
+0

谢谢。这是一个分隔文件,因此[,4]有效。然而,看起来我存储这个列表的方式并不正确。以这种方式阅读清单的理想格式是什么?我的列表是一个包含50行的单列文件,并且是字母数字。 – sumoka 2015-04-03 21:02:02

+0

没有称为“分隔文件”的R数据结构。您需要在该对象上发布str()。 – 2015-04-03 21:05:10

+0

我可以使用以下内容读取文件 - Sls_Other_Line_949_data = read.delim(“C:/file_path/filename.txt”,header = TRUE,sep =“|”,quote =“”,dec =“。”) str(VarCodes) 'data.frame':\t 49 obs。 1变量: $ V1:因子w/49级别“BU_601”,“BU_604”,..:1 2 3 4 5 6 7 8 9 10 ... – sumoka 2015-04-03 21:44:53