Re: [問題] 函數輸入 自動命名

看板R_Language作者時間9年前 (2016/04/17 12:52), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
key_value = function(a) { x = as.list(a + seq_along(a)) names(x) = paste0(substitute(a), seq_along(a)) return(x) } 測試結果: k = c(1, 2, 3) attach(key_value(k)) k1 k2 k3 apple = c(1, 2, 3) attach(key_value(apple)) apple1 apple2 apple3 ※ 引述《laputaca (離歌笑)》之銘言: : 標題: [問題] 函數輸入 自動命名 : 時間: Sat Apr 16 16:31:08 2016 : : 想請問各位大大 : : 如果寫一個函數讓他可以自動命名 : : 舉個例子 : : k <- c(1:3) : : function(k) : { : : ?? <- k[1]+1 : ?? <- k[2]+2 : ?? <- k[3]+3 : : } : : : 如何才有辦法讓??的部分 : : 可以是自動命名成 : : k1 <- k[1]+1 : k2 <- k[2]+2 : k3 <- k[3]+3 : : 也就是說如果我輸入的是apple : : 他就是自動定義三個數值是 : : apple1, apple2, apple3 : : : : : 我有查過之前的文章 : : 似乎有提到 甚麼 assign(paste0("k",i),value) : : 不過實在是不太懂 : : 有大大能指點一下嗎? : : 感謝 : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.233.176.210 : ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1460795472.A.A79.html : → andrew43: 用eval硬幹,會改用list。我會選後者。 04/16 17:26 : → laputaca: 改用list是?不太懂 04/16 20:02 : → cywhale: assign(paste0("apple",i),k[i]+i) 04/16 21:44 : → laputaca: 感恩 我嘗試看看 04/16 21:45 : → laputaca: 只是paste0("??") ?的地方如何靠function輸入的不同而 04/16 21:47 : → laputaca: 改變? 這樣感覺還是只能手動一個一個輸入? 04/16 21:47 : → andrew43: a <- list(); a[[1]] <- 1; a[[2]] <- 12; print(a) 04/16 22:49 : → andrew43: 推assign 04/16 22:50 : 推 carl090105: function(k, varName){ paste0(varName, 04/16 22:51 : → carl090105: I) ... } 04/16 22:51 : → celestialgod: 我也覺得善用list會是比較好的方式 04/16 22:52 : → celestialgod: 當你遇到要回圈的時候,a1, a2, a3這樣命名又要 04/16 22:52 : → celestialgod: 用eval了... 就是搞死自己而已XD 04/16 22:53 : → laputaca: 的確今晚就是一直在搞瘋自己== 04/16 23:12 : 推 memphis: eval 寫起來很醜... 不知道有沒有好辦法 04/16 23:24 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.227.9.87 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1460868745.A.14F.html

04/17 13:23, , 1F
感謝大大! 馬上來試試!
04/17 13:23, 1F
文章代碼(AID): #1N4nQ95F (R_Language)
討論串 (同標題文章)
文章代碼(AID): #1N4nQ95F (R_Language)