r - 更改列表中数据框中的列

标签 r list dataframe lapply

我有一个包含 78 个数据帧 (list_of_df) 的列表,它们都具有相同的第一列,其中包含所有带注释的 ensembl 转录本 id:s,但是它们的扩展名是“.1”,即 (“ENST00000448914.1”等),我想删除它以便将它们与纯 ENST-ID 进行匹配。

我尝试将 lapply 与内部的 sapply 一起使用,如下所示:

lapply(list_of_df, function(x)  
                 cbind(x,sapply(x$target_id, function(y) unlist(strsplit(y,split=".",fixed=T))[1])) ) 

但这需要很长时间,有人知道如何做到这一点吗?

最佳答案

我们循环遍历 data.frameslist,并使用 sub 删除 .,然后使用第一列中的数字。

lapply(list_of_df, function(x) {
          x[,1] <-sub('\\.\\d+', '', x[,1])
           x })

#[[1]]
#   target_id value
#1 ENST000049    39
#2 ENST010393    42

#[[2]]
#   target_id value
#1 ENST123434   423
#2  ENST00838    23

注意:即使 OP 的第一列是 factor,这也应该有效。

数据

list_of_df <- list(data.frame(target_id= c("ENST000049.1", 
   "ENST010393.14"), value= c(39, 42), stringsAsFactors=FALSE), 
  data.frame(target_id=c("ENST123434.42", "ENST00838.22"), 
   value= c(423, 23), stringsAsFactors=FALSE))

关于r - 更改列表中数据框中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34744267/

相关文章:

从 R 列表中删除特定类的元素

python - Pandas 比较列表的列

python - 如何根据多个条件按变量组有效更新数据帧值?

python - 在多个字符串中搜索多个单词

r - r中的散点图具有巨大的独特观察

r - 在 R 中的字符串中不存在的数据框中创建列

r - ggplot2中的框图之间的间距

r - 使用 SQLDF : too many SQL variables 在 R 中出错

python - list.pop 的 numpy 等价物?

python - 将文件中的普通数字转换为整数列表