2015-07-20 107 views
-1

我試圖逐個遞歸地提取每個元素以將其放置在循環函數中。下面的表達式中的項目,我從中獲取矢量中的以下對象。我想提取每個數字對象的內容。我似乎有重大問題,因爲我花了一天的時間嘗試這個練習而沒有結果。我已經使用noquote從「」中跳出,但這也不起作用,因爲它將noquote對象中的對象進行轉換。將主對象轉換爲數字也不起作用,將主對象內的元素轉換爲數字也不起作用。從字符對象列表中提取數字對象

as.vector(paste("q", paste("[[",1:length(q),"]]"), sep="", collapse=",")) 
[1] "q[[ 1 ]],q[[ 2 ]],q[[ 3 ]],q[[ 4 ]],q[[ 5 ]],q[[ 6 ]],q[[ 7 ]],q[[ 8 ]],q[[ 9 ]],q[[ 10 ]],q[[ 11 ]],q[[ 12 ]],q[[ 13 ]],q[[ 14 ]],q[[ 15 ]],q[[ 16 ]],q[[ 17 ]],q[[ 18 ]],q[[ 19 ]],q[[ 20 ]],q[[ 21 ]]" 

較短的例子

q<-list(c(1,3,5,7,8),c(2,4,6,7,8),c(1,2,5,5,8)) 
as.vector(paste("q", paste("[[",1:length(q),"]]"), sep="", collapse=",")) 
[1] "q[[ 1 ]],q[[ 2 ]],q[[ 3 ]]" 

編輯:

沒有考慮的列表,並從表達產生將如所希望的輸出如下可能的錯誤:

d<- as.vector(paste("q", paste("[[",1:length(q),"]]"), sep="", collapse=",")) 
d 
[1] "q[[ 1 ]],q[[ 2 ]],q[[ 3 ]]" 

d[[1]] 
[1] 1 3 5 7 8 
d[[2]] 
[1] 2 4 6 7 8 
d[[3]] 
[1] 1 2 5 5 8 
+0

您提供的'q'的輸出值是多少? – josliber

+1

問題是你有一個字符向量'「q [[1]],q [[2]],q [[3]]」'並且你想解析它以提取'q'的對應值。? – user20650

+0

如果是這樣,'lapply(strsplit(d,「,」)[[1]],function(x)eval(parse(text = x)))'是一種方法......但我會重新考慮你的工作流程嘗試並避免生成此字符串 – user20650

回答

1

基於對你的問題發表評論,這聽起來像你想指定一些指數在q中,然後從相應的向量中提取最小值和最大值。這可以通過sapply來完成:

idx <- c(1, 2, 3) 
sapply(q[idx], min) 
# [1] 1 2 1 
sapply(q[idx], max) 
# [1] 8 8 8 
+0

我正在與lapply一起工作我認爲你的解決方案更好,非常感謝和appologies爲一個非明確框架的問題。 – Barnaby

相關問題