如何将[
中的字符串传递/用于子集,例如阵列。我一直在考虑这样的事情(对于4个dims数组):
inputDims <- ",,'CCC',"
outputArray[parse(text=inputDims)]
以上不起作用 - 如何实现这一目标?
我对在[
中使用逻辑向量(或矩阵)不感兴趣 - 如果可能的话,只是字符串(在示例中的形式)。
答案 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 )