将函数重命名为r上的列表时出错

将函数重命名为r上的列表时出错,r,dplyr,R,Dplyr,我的数据: library(tidyverse) 1:6%>% str_c('var',.)%>% map(~assign(.,runif(30,20,100),envir=globalenv())) tibble<-as_tibble( bind_cols(mget(ls(pattern='*v'))) ) cluster<-kmeans(tibble,centers=3) cluster tibble$kmeans<-as.factor(clust

我的数据:

library(tidyverse)

1:6%>%
  str_c('var',.)%>%
  map(~assign(.,runif(30,20,100),envir=globalenv()))
tibble<-as_tibble(
  bind_cols(mget(ls(pattern='*v')))
)
cluster<-kmeans(tibble,centers=3)
cluster
tibble$kmeans<-as.factor(cluster[['cluster']])
head(tibble)
第一个功能:

mylist%>%
  lapply(function(x){
    lapply(x,names(x)[str_which(names(x),regex('KMEa',ignore_case=T))])<- 'variable'
})
mylist%>%
  map(.,~names(.)[str_which(names(.),regex('KM',ignore_case=T))])<-'variable'
mylist%>%
lappy(函数(x){

lapply(x,names(x)[str_which(names(x),regex('KMEa',ignore_case=T)))元素在
mylist
中是数字向量,而对于
rename_at
来说,我们需要一个tible对象。因此,首先我们需要将该数字向量转换为tible对象,然后我们可以一起使用
map
rename_at

library(tidyverse)

mylist[] <- lapply(mylist, function(x) as.tibble(t(x)))
map(mylist, ~ rename_at(., vars(contains('kmeans')), ~ 'variable'))


#$dataset1
# A tibble: 1 x 3
#      a variable     c
#  <dbl>    <dbl> <dbl>
#1     1        2     3

#$dataset2
# A tibble: 1 x 3
#      a variable     c
#  <dbl>    <dbl> <dbl>
#1     4        5     6

#$dataset2
# A tibble: 1 x 3
#      r variable     p
#  <dbl>    <dbl> <dbl>
#1     7        8     9
库(tidyverse)

mylist[]在函数中,重命名后应返回x以获得所需结果-

mylist<-list(dataset1=c(a=1,kmeans=2,c=3),
             dataset2=c(a=4,kmeans=5,c=6),
             dataset2=c(r=7,kmeans=8,p=9))

fn <- function(x) {names(x)[str_which(names(x),regex('KMEa',ignore_case=T))] <- 'variable'
                  return(x)}
lapply(mylist,fn) 
mylist
library(tidyverse)

mylist[] <- lapply(mylist, function(x) as.tibble(t(x)))
map(mylist, ~ rename_at(., vars(contains('kmeans')), ~ 'variable'))


#$dataset1
# A tibble: 1 x 3
#      a variable     c
#  <dbl>    <dbl> <dbl>
#1     1        2     3

#$dataset2
# A tibble: 1 x 3
#      a variable     c
#  <dbl>    <dbl> <dbl>
#1     4        5     6

#$dataset2
# A tibble: 1 x 3
#      r variable     p
#  <dbl>    <dbl> <dbl>
#1     7        8     9
mylist<-list(dataset1=c(a=1,kmeans=2,c=3),
             dataset2=c(a=4,kmeans=5,c=6),
             dataset2=c(r=7,kmeans=8,p=9))

fn <- function(x) {names(x)[str_which(names(x),regex('KMEa',ignore_case=T))] <- 'variable'
                  return(x)}
lapply(mylist,fn) 
mylist %>% lapply( function(x) {names(x)[str_which(names(x),regex('KMEa',ignore_case=T))] <- 'variable'
return(x)})