作者HeroNoah ()
看板R_Language
标题Re: [问题] 函数输入 自动命名
时间Sun Apr 17 12:52:23 2016
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://webptt.com/cn.aspx?n=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://webptt.com/cn.aspx?n=bbs/R_Language/M.1460868745.A.14F.html
1F:推 laputaca: 感谢大大! 马上来试试! 04/17 13:23