将行名称设置为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)