这里的目标是将几个文件中的前6列连接到R中的数据框。 我很困惑为什么方法(1)工作但方法(2)不起作用。 对我来说,两种方法都应该是等价的。
非常欢迎用于调试的答案或提示。
方法(1)
ret <- sapply(fn, function(x) { (read.table(x, header = FALSE)) })
ret <- lapply(ret, function(x) {x[, 1:6]})
方法(1)正确输出:
> head(ret) $`../pool.11421.poolFile` V1 V2 V3 V4 V5 V6 1 1 M5132 ACAGTG 11421 351 1,2,3,4,5,6,7,8 2 2 M6764 ACTGAT 11421 351 1,2,3,4,5,6,7,8 3 3 M5597 AGTCAA 11421 351 1,2,3,4,5,6,7,8 4 4 M5636 AGTTCC 11421 351 1,2,3,4,5,6,7,8 5 5 M2463 ATCACG 11421 351 1,2,3,4,5,6,7,8 6 6 M5792 ATGTCA 11421 351 1,2,3,4,5,6,7,8 7 7 M6799 ATTCCT 11421 351 1,2,3,4,5,6,7,8
方法(2)
ret <- sapply(fn, function(x) { (read.table(x, header = FALSE))[, 1:6]})
方法(2)错误输出:
> head(ret) ../pool.11421.poolFile ../pool.11422.poolFile ../pool.11423.poolFile V1 Integer,23 Integer,48 Integer,48 V2 Character,23 Character,48 Character,48 V3 Character,23 Character,48 Character,48 V4 Integer,23 Integer,48 Integer,48 V5 Integer,23 Integer,48 Integer,48 V6 Character,23 Character,48 Character,48
答案 0 :(得分:3)
你的第二个方法返回一个数组。 sapply
具有simplify
参数。如果调用TRUE
simplify2array
并且R尝试将数据转换为向量或数组。有关详细信息,请参阅?sapply
。
尝试改为:
ret <- sapply(fn, function(x) { (read.table(x, header = FALSE))[, 1:6]}, simplify=FALSE)