计算R

时间:2016-09-08 10:14:19

标签: r

我想计算R中许多对象的长度,并返回名称前缀为“length_”的对象。但是,当我输入此代码时:

A <- c('A', 'B', '3')
B <- c('A', '2')
files <- ls()
for (i in 1:length(files)) assign(paste("length_",files[i], sep = ""), length(unlist(files[i])))

这将返回向量length_A和length_B,但每个向量的值为1而不是3和2。

感谢您的帮助, 保罗

P.S。我实际上想将它应用于不同的函数而不是长度(来自包ape的GC.content来计算DNA序列的GC含量),但是使用该函数我具有与上述示例相同的问题。

3 个答案:

答案 0 :(得分:2)

在R 3.2.0中,引入了lengths函数,该函数计算列表中每个项目的长度。使用此功能,如上文评论中的@ docendo-discimus注释,超紧凑(和类R)解决方案

lengths(mget(ls()))

返回一个命名向量

A B 
3 2 

mget返回环境中的对象列表,有点像“多个get。”

答案 1 :(得分:0)

A <- c('A', 'B', '3')
B <- c('A', '2')
files <- list(A,B)
sapply(files,length)

这会给你答案,但我不知道它是不是你想要的。

答案 2 :(得分:0)

A <- c('A', 'B', '3')
B <- c('A', '2')
files <- ls()
for (i in 1:length(files)) assign(paste("length_",files[i], sep = ""), length(get(files[i])))

这将创建值为3的length_A和值为2的length_B。