是否有赋值运算符的函数形式?我希望能够用lapply调用作业,如果这是一个坏主意,我总是很好奇。
编辑:
这是一个玩具示例,显然有更好的方法可以做到这一点:
假设我有一个data.frames,dat列表,每个都对应一次实验。我希望能够添加一个新列“主题”,并给它一个假名。我想的方式就像
lapply(1:3, function(x) assign(data.frame = dat[[x]], column="subject", value=x)
输出可以是修改数据帧的列表,也可以是修改纯粹的副作用。
列表起始列表的输入
list(structure(list(V1 = c(-1.16664504687199, -0.429499924318301, 2.15470735901367, -0.287839633854442, -0.850578353982526, 0.211636723222015, -0.184714165752958, -0.773553182015158, 0.801811848828454, 1.39420292299319 ), V2 = c(-0.00828185523886259, -0.0215669898046275, 0.743065397283645, -0.0268464140141802, 0.168027242784788, -0.602901928341917, 0.0740511186398372, 0.180307494696194, 0.131160421341309, -0.924995634374182)), .Names = c("V1", "V2"), row.names = c(NA, -10L), class = "data.frame"), structure(list( V1 = c(1.81912921386885, 1.17011641727415, 0.692247839769473, 0.0323050362633069, 1.35816977313292, -0.437475434344363, -0.270255715332778, 0.96140963297774, 0.914691132220417, -1.8014509598977), V2 = c(1.45082316226241, 2.05135744606495, -0.787250759618171, 0.288104852581324, -0.376868533959846, 0.531872044490353, -0.750375220117567, -0.459592764008714, 0.991667163481123, 1.31280356980115)), .Names = c("V1", "V2" ), row.names = c(NA, -10L), class = "data.frame"), structure(list( V1 = c(0.528912899341174, 0.464615157920766, -0.184211714281637, 0.526909095449027, -0.371529800682086, -0.483772861751781, -2.02134822661341, -1.30841566046747, -0.738493559993166, -0.221463545903242), V2 = c(-1.44732101816006, -0.161730785376045, 1.06294520132753, 1.22680614207705, -0.721565979363022, -0.438309438404104, -0.0243401435910825, 0.624227513999603, 0.276605218579759, -0.965640602482051)), .Names = c("V1", "V2"), row.names = c(NA, -10L), class = "data.frame"))
答案 0 :(得分:5)
也许我没有得到它,但正如“R编程的艺术”所述:
左侧不仅仅是一个的任何赋值语句 标识符(表示变量名称)被视为替代 功能
所以事实上你总是可以翻译这个:
names(x) <- c("a","b","ab")
到此:
x <- "names<-"(x,value=c("a","b","ab"))
一般规则只是"function_name<-"(<object>, value = c(...))
它也适用于"
:
> x <- c(1:3)
> x
[1] 1 2 3
> names(x) <- c("a","b","ab")
> x
a b ab
1 2 3
> x
a b ab
1 2 3
> x <- c(1:3)
> x
[1] 1 2 3
> x <- "names<-"(x,value=c("a","b","ab"))
> x
a b ab
1 2 3
答案 1 :(得分:3)
有onCreate()
功能。我没有看到使用它的任何问题,但你必须知道你想要分配的环境。有关语法,请参阅帮助assign
。
仔细阅读本章,详细了解环境的细节。 http://adv-r.had.co.nz/Environments.html