'what' 必须是 R 错误消息中的函数或字符串

'what' must be a function or character string in R error message

我正在绘制不同的 umap。 我有一部分代码在昨天工作,但是今天我收到错误消息: do.call(c, lapply(2:ncol(nn_idx), function(i) as.vector(rbind(nn_idx[ : 'what' 必须是函数或字符串

我的代码如下:

read.csv (Tabula, row.names=1)%>% as.matrix()-> counts0
t(t(counts0)/colSums(counts0))-> fracs
log(fracs+ 10^-5) -> lfracs
irlba::prcomp_irlba(t(lfracs), n=30)-> pca
colnames (lfracs) -> rownames (pca$x)
rownames (lfracs) -> rownames (pca$rotation)
pca$x %>% head()
set.seed(12345678)
uwot::umap(pca$x, ret_nn=TRUE, spread=5)-> ump
rownames(pca$x)-> rownames(ump$embedding)
as_tibble(ump$embedding)%>%
  ggplot + geom_point (aes(x=V1, y=V2), size= .5)+ coord_equal()

现在这是我收到错误消息的部分:

library(igraph)
louvain_clustering <- function (nn_idx){
  do.call (c,lapply (2:ncol(nn_idx), function (i)
    as.vector (rbind (nn_idx[,1], nn_idx[,i]))))->edge_list
  igraph::make_undirected_graph(edge_list)-> graph
  igraph::cluster_louvain(graph)-> clustering
  factor(igraph::membership(clustering))
}

louvain_clustering(ump$nn$euclidean$idx)->louvain

as_tibble(ump$embedding)%>%
  mutate(cluster=louvain)-> Maus
  ggplot(Maus, aes(x=V1, y=V2, col=cluster))+
    geom_point(size=.3)+
    geom_text(aes(label=cluster), col="black",
              data= (Maus %>% group_by (cluster)%>% summarise_all(mean)))+
    coord_equal()

在线出现错误信息

louvain_clustering(ump$nn$euclidean$idx)->louvain

并声明:do.call(c, lapply(2:ncol(nn_idx), function(i) as.vector(rbind(nn_idx[ : 'what' 必须是函数或字符串

我实在想不通我的错误在哪里,希望有人能帮忙。谢谢

也许你覆盖了原始函数 c ? R 让你这样做,我能够在下面复制你的错误,要修复它,你只需删除 c ,它就会恢复到原始函数,所以你可以试试,如果它解决了你的问题,请告诉我。

do.call(c,list(1,2,3))
>> 1 2 3 
c <- 123
do.call(c, list(1,2,3))
>> Error in do.call(c, list(1, 2, 3)) : 
'what' must be a function or character string
rm(c)
do.call(c,list(1,2,3))
>> 1 2 3