如何将[
中的字符串传递/使用到子集例如阵列。我一直在想这样的事情(对于4 dims阵列):如何通过/使用[子集中的字符串
inputDims <- ",,'CCC',"
outputArray[parse(text=inputDims)]
上面不行 - 如何实现这个?
我对[
内部使用逻辑向量(或矩阵)并不感兴趣 - 只要是可能的字符串(类似于示例中的形式)。
如何将[
中的字符串传递/使用到子集例如阵列。我一直在想这样的事情(对于4 dims阵列):如何通过/使用[子集中的字符串
inputDims <- ",,'CCC',"
outputArray[parse(text=inputDims)]
上面不行 - 如何实现这个?
我对[
内部使用逻辑向量(或矩阵)并不感兴趣 - 只要是可能的字符串(类似于示例中的形式)。
(这似乎是一个可怕的黑客攻击。无法看到的价值在沿着这些线路进行处理,但也许这将阐明所需要的泥塑的R功能“呼叫”。)
使用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)
不错 - 谢谢!看起来,对于“未使用”模糊使用“TRUE”是至关重要的 - 我没有弄清楚。 – RSzT
在转换为列表之后执行此操作也很重要,因为逻辑否则会根据尝试执行此任务的向量的模式强制为“字符”或“数字”。 –
对于downvoters:你能告诉我该如何处理这样的:http://stackoverflow.com/questions/42578273/array-subset不够相似,您的问题),然后用装包做-element-by-one-dimension-by-name-dynamic,因为这是更复杂的问题,这个问题试图解决它... – RSzT
你想达到什么目的? [动态子集维度](http://stackoverflow.com/questions/42562823/subset-parts-of-array-with-dynamic-dimension)? –
如果你设置了'idx < - “CCC”',那么'outputArray [,idx,]'返回你想要的。 –