Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.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
如何使用running()函数保留行名?_R_Rowname - Fatal编程技术网

如何使用running()函数保留行名?

如何使用running()函数保留行名?,r,rowname,R,Rowname,我想知道在使用running()函数时如何保留行名 e、 我正在两个时间序列之间应用一个连续的相关性,对我来说,保留行名非常重要,因为这是我时间序列的年份 这是一个例子: library(gtools) test <- matrix(rnorm(100, sd=4), nrow = 50, ncol=2, dimnames= list(1966:2015, c("var1", "var2"))) # View(running

我想知道在使用
running()
函数时如何保留行名

e、 我正在两个时间序列之间应用一个连续的相关性,对我来说,保留行名非常重要,因为这是我时间序列的年份

这是一个例子:

library(gtools)

test <- matrix(rnorm(100, sd=4), nrow = 50, ncol=2, 
               dimnames= list(1966:2015, c("var1", "var2")))               

# View(running(test[,1], test[,2], fun=cor, width=5, by=5))
run.test <- running(test[,1], test[,2], fun=cor, width=5, by=5)
但我想保留矩阵的行名称,以便在行中有类似的内容。名称:

    row.names   x
1   1966:1970   0.41739378
2   1971:1975   0.96117176
3   1976:1980   -0.54342033
4   1981:1985   0.09633428
5   1986:1990   -0.07296177
6   1991:1995   0.60366540
7   1996:2000   -0.34679270
8   2001:2005   -0.07828379
9   2006:2010   0.89614252
10  2011:2015   0.65230839
我试过类似的方法,但不起作用

running(test[,1], test[,2], fun=cor, width=5, by=5, rownames=rownames(test)) 

一些方向?

我认为,您可以简单地更改它们,而不是试图保留名称,因为运行
显然将使用间隔作为向量名称。例如,您可以这样做:

library(gtools)
years <- 1966:2015 #Define the years interval
test <- matrix(rnorm(100, sd=4), nrow = 50, ncol=2, dimnames= list(years, c("var1", "var2")))
result <- running(test[,1], test[,2], fun=cor, width=5, by=5) #save the output
n <-length(years)
intervals <- paste0(years[seq(1, n, by=5)],":", years[seq(5, n, by=5)]) #create the intervals as strings
names(result) <- intervals #rename the output vector
库(gtools)

年份这将从run.test(这是一个命名向量,而不是您显示的dataframe对象)中拆分名称。然后,我获取名字的向量,强制为数字,并从测试数据帧中提取。然后对第二个名称执行相同操作,并将结果粘贴回一起:

 rn <- strsplit(names(run.test) , ":")

 as.numeric(sapply(rn, "[", 1))
# [1]  1  6 11 16 21 26 31 36 41 46

 names(run.test) <- paste(rownames(test)[as.numeric(sapply(rn, "[", 1))] ,
                          rownames(test)[as.numeric(sapply(rn, "[", 2))]  , sep=":")
 run.test
#------------
 1966:1970  1971:1975  1976:1980  1981:1985  1986:1990  1991:1995  1996:2000  2001:2005  2006:2010  2011:2015 
 0.5016829 -0.5987129 -0.5026115  0.5441250 -0.4203586 -0.4452988 -0.1111146 -0.5197370 -0.2468734 -0.1138099 

rn您似乎正在为正在使用View检查的对象获取数据帧。我只看到一个向量。(真正的男人不会使用
View()
;他们使用
str()
亲爱的@bonded非常感谢你的友好回答。因为我还是一个初学者,不像你那样是专家,也许我对
View()
函数的使用是错误的,但我仍然是一个真正的男人:)包括在内,如果我将
running()
函数应用到数据帧,我不知道如何保存行名称或标签。我只是复制了View()生成的结果,以便更好地显示我的问题。
 rn <- strsplit(names(run.test) , ":")

 as.numeric(sapply(rn, "[", 1))
# [1]  1  6 11 16 21 26 31 36 41 46

 names(run.test) <- paste(rownames(test)[as.numeric(sapply(rn, "[", 1))] ,
                          rownames(test)[as.numeric(sapply(rn, "[", 2))]  , sep=":")
 run.test
#------------
 1966:1970  1971:1975  1976:1980  1981:1985  1986:1990  1991:1995  1996:2000  2001:2005  2006:2010  2011:2015 
 0.5016829 -0.5987129 -0.5026115  0.5441250 -0.4203586 -0.4452988 -0.1111146 -0.5197370 -0.2468734 -0.1138099