我已经四处寻找了很长时间,但似乎解决不了这个问题,虽然我觉得这应该是一个容易的问题。
我有54个因素,包含不同数量的字符串,确切地说是路径的名称。例如,这里有两个包含元素的因素:
> PWe1
[1] Gene_Expression
[2] miR-targeted_genes_in_muscle_cell_-_TarBase
[3] Generic_Transcription_Pathway
> PWe2
[1] miR-targeted_genes_in_epithelium_-_TarBase
[2] miR-targeted_genes_in_leukocytes_-_TarBase
[3] miR-targeted_genes_in_lymphocytes_-_TarBase
[4] miR-targeted_genes_in_muscle_cell_-_TarBase
我想要做的是把它们合并成一个大数据框架和54个列,其中每个列都有一个对应的因子的名称。我尝试过cbind、cbind.data.frame和其他一些选项,但是这些选项返回的是数值而不是字符串。
预期产出:
PWe1 PWe2
Gene_Expression miR-targeted_genes_in_epithelium_-_TarBase
miR-targeted_genes_in_muscle_cell_-_TarBase miR-targeted_genes_in_leukocytes_-_TarBase
Generic_Transcription_Pathway miR-targeted_genes_in_lymphocytes_-_TarBase
NA miR-targeted_genes_in_muscle_cell_-_TarBase
说到R,我是个新手,有人能推动我找到一个可能的解决方案吗?
提前感谢!
发布于 2016-03-31 06:01:37
l1 <- max(length(v1), length(v2))
length(v1) <- l1
length(v2) <- l1
cbind(as.character(v1), as.character(v2))
# [,1] [,2]
#[1,] "Gene_Expression" "miR-#targeted_genes_in_epithelium_-_TarBase"
#[2,] "miR-targeted_genes_in_muscle_cell_-_TarBase" "miR-#targeted_genes_in_leukocytes_-_TarBase"
#[3,] "Generic_Transcription_Pathway" "miR-#targeted_genes_in_lymphocytes_-_TarBase"
#[4,] NA "miR-#targeted_genes_in_muscle_cell_-_TarBase"
发布于 2016-03-31 06:01:42
lst <- mget(ls(pattern="PW")) #<--- Create list with all necessary vectors.
ind <- lengths(lst) #<--- find maximum length
as.data.frame(do.call(cbind,
lapply(lst, `length<-`, max(ind)))) #<--- Convert to data.frmae
# PWe1 PWe2
# 1 Gene_Expression miR-targeted_genes_in_epithelium_-_TarBase
# 2 miR-targeted_genes_in_muscle_cell_-_TarBase miR-targeted_genes_in_leukocytes_-_TarBase
# 3 Generic_Transcription_Pathway miR-targeted_genes_in_lymphocytes_-_TarBase
# 4 <NA> miR-targeted_genes_in_muscle_cell_-_TarBase
发布于 2016-03-31 05:49:05
如果在使用cbind之前将因素转换为字符,则不会获得数字值:
testFrame <- data.frame(cbind(as.character(PWe1), as.character(PWe3))
如果两个向量的长度不同,则cbind抛出一个警告,较短的向量的元素将被复制。如果在您的情况下这是不令人满意的,那么data.frame对象可能不是正确的选择吗?
https://stackoverflow.com/questions/36334869
复制相似问题