将行名称设置为R中的多个矩阵

将行名称设置为R中的多个矩阵,r,matrix,purrr,rowname,R,Matrix,Purrr,Rowname,我有一个由两个数据帧组成的列表。基于此,我创建了一个带有数字变量的矩阵。在下一步中,我尝试根据原始列表的一列为矩阵设置行名称。然而,这是行不通的。将行名称设置为原始列表确实有效。有人知道问题出在哪里吗 install.packages(“purrr”) 图书馆(purrr) #资料 数据1 1 y 20 20 #>2Z2525 #> #> [[2]] #>新id met1 met2 #>1 b 5 22 #>2 c 15 24 #设置行名称:新的\u id 我的清单1% purrr::map(

我有一个由两个数据帧组成的列表。基于此,我创建了一个带有数字变量的矩阵。在下一步中,我尝试根据原始列表的一列为矩阵设置行名称。然而,这是行不通的。将行名称设置为原始列表确实有效。有人知道问题出在哪里吗

install.packages(“purrr”)
图书馆(purrr)
#资料
数据1 1 y 20 20
#>2Z2525
#> 
#> [[2]]
#>新id met1 met2
#>1 b 5 22
#>2 c 15 24
#设置行名称:新的\u id
我的清单1%
purrr::map(~data.frame(.x,row.names=.x$new_id))#有效
我的清单1
#> [[1]]
#>新id met1 met2
#>y 20 20
#>z z 25 25
#> 
#> [[2]]
#>新id met1 met2
#>b 5 22
#>c 15 24
#将“我的列表”转换为矩阵,并选择数值变量met1和met2
矩阵%
purrr::map(~dplyr::select(.x,met1,met2))%>%
purrr::map(as.matrix)
#将“num_slct”转换为矩阵并设置row.names
矩阵%>%
purrr::map(~.x,row.names=my_list$new_id)#set row.names不起作用
#> [[1]]
#>大都会1大都会2
#> [1,]   20   20
#> [2,]   25   25
#> 
#> [[2]]
#>大都会1大都会2
#> [1,]    5   22
#> [2,]   15   24
由(v0.3.0)于2020年4月14日创建的一个选项可以是:

map(.x = my_list, ~ as.matrix(.x[-1]) %>%
     `rownames<-`(.x$new_id))

[[1]]
  met1 met2
y   20   20
z   25   25

[[2]]
  met1 met2
b    5   22
c   15   24
map(.x=my_list,~as.matrix(.x[-1])%>%

`rownames您也可以这样做


# Data
data1 <- data.frame(new_id = c("y", "z"), met1 = c(20, 25),  met2 = c(20, 25))
data2 <- data.frame(new_id = c("b", "c"), met1 = c(5, 15), met2 =c(22, 24))

my_list <- list(data1, data2)

my_list %>% 
  purrr::map(~as.matrix(data.frame(.x, row.names = .x$new_id) %>% select(-new_id)))  

[[1]]
  met1 met2
y   20   20
z   25   25

[[2]]
  met1 met2
b    5   22
c   15   24


#资料

data1更好的选择是使用
rownames.force
参数
as.matrix
进行data.frame输入:

my_list %>% 
    purrr::map(~dplyr::select(.x, met1, met2)) %>% map(as.matrix,rownames.force=TRUE)