如何在[to subset]中传递/使用字符串

时间:2017-03-04 13:14:42

标签: arrays r subset

如何将[中的字符串传递/用于子集,例如阵列。我一直在考虑这样的事情(对于4个dims数组):

inputDims <- ",,'CCC',"

outputArray[parse(text=inputDims)]

以上不起作用 - 如何实现这一目标?

我对在[中使用逻辑向量(或矩阵)不感兴趣 - 如果可能的话,只是字符串(在示例中的形式)。

1 个答案:

答案 0 :(得分:0)

(这看起来像是一个可怕的黑客。无法看到沿着这些方向前进的价值,但也许它会澄清构建R函数“call”所需的内容。)

使用scan创建适当长度的字符向量。然后将其附加到列表中,其中数组是第一个元素。需要将“空”位置转换为TRUE,才能使切片成功:

vec <- scan( text= inputDims, sep="," , what="")
arglist <- list(outputArray)
arglist[ 2:(length(vec)+1) ] <- as.list(vec)
arglist[ arglist==""] <- TRUE
# Using your example in the other question
> do.call("[", arglist )
   bb bbb
a1 NA  NA
a2 NA  NA
a3 NA  NA

你之前被提到了abind :: asub,如果你看到它的论据与它的论点(与你的问题不够相似),那么在加载的包中执行此操作:

getAnywhere( asub.default )