Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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
R:设置重复';行名称';到数字数据帧_R - Fatal编程技术网

R:设置重复';行名称';到数字数据帧

R:设置重复';行名称';到数字数据帧,r,R,我的原始数据框diasyhoras有3列: a) “Dia”、“Visitas”、“Hora” 我需要取“Dia”列并将其值作为行名 str(diasyhoras) 'data.frame': 175 obs. of 3 variables: $ Dia : Factor w/ 7 levels "Domingo","Jueves",..: 1 3 4 5 2 7 6 1 3 4 ... $ Visitas: num 271 493 787 853 285 712 782 16

我的原始数据框diasyhoras有3列:

a) “Dia”、“Visitas”、“Hora”

我需要取“Dia”列并将其值作为行名

str(diasyhoras)
'data.frame':   175 obs. of  3 variables:
 $ Dia    : Factor w/ 7 levels "Domingo","Jueves",..: 1 3 4 5 2 7 6 1 3 4 ...
 $ Visitas: num  271 493 787 853 285 712 782 16 157 734 ...
 $ Hora   : int  0 0 0 0 0 0 0 1 1 1 ...
最终目标是使用Rstudio提供的
d3heatmap
库,使用新的df(仅数值)绘制热图(我没有找到关于此软件包的任何教程,因此我正在尽全力)

因此,
d3heatmap
的帮助说明,第一个参数应该是“除非x包含任何NAs,否则数值矩阵默认为TRUE。”

我试过这个:

1. diasyhoras2 <- diasyhoras[,-1] #Removes the "Dia" column and creates a new df.

2. rownames(diasyhoras2) <- diasyhoras[,1] 

1。diasyhoras2您可以使用
make.names(…,unique=TRUE)
获取唯一的行名称

rownames(diasyhoras2) <- make.names(diasyhoras[,1], unique = TRUE)
不幸的是,如果您想使用天数作为数据帧的行名称,就没有办法解决这个问题。在R中,如错误所述,数据帧中不允许重复的行名称。但是,它们在矩阵中是允许的,因此您可能希望改为使用该路径。我不熟悉d3heatmap软件包,所以我不能说如果使用矩阵,是否会得到期望的结果

x <- data.frame(a = rep(month.abb[1:2], 2))
rownames(x) <- x$a
# Error in `row.names<-.data.frame`(`*tmp*`, value = value) : 
#   duplicate 'row.names' are not allowed
# In addition: Warning message:
# non-unique values when setting 'row.names': ‘Feb’, ‘Jan’ 
m <- as.matrix(x)
rownames(m) <- x$a
m
#     a    
# Jan "Jan"
# Feb "Feb"
# Jan "Jan"
# Feb "Feb" 

x这很接近,但是它在行名上加了一个。(n+1)。有没有办法不让行名中的(n+1)出现这种情况?那么它们就不是唯一的了。错误说明不允许重复的行名称。这是R中的一条规则。我明白了,所以不能这样做,因为行名的行为就像行的ID。谢谢@Richard Scriven
rep(month.abb[1:2], 3)
# [1] "Jan" "Feb" "Jan" "Feb" "Jan" "Feb"
make.names(rep(month.abb[1:2], 3), unique = TRUE)
# [1] "Jan"   "Feb"   "Jan.1" "Feb.1" "Jan.2" "Feb.2"
x <- data.frame(a = rep(month.abb[1:2], 2))
rownames(x) <- x$a
# Error in `row.names<-.data.frame`(`*tmp*`, value = value) : 
#   duplicate 'row.names' are not allowed
# In addition: Warning message:
# non-unique values when setting 'row.names': ‘Feb’, ‘Jan’ 
m <- as.matrix(x)
rownames(m) <- x$a
m
#     a    
# Jan "Jan"
# Feb "Feb"
# Jan "Jan"
# Feb "Feb"