【发布时间】:2012-02-19 20:32:49
【问题描述】:
我想使用向量中的字符作为字符对象的名称 目标是得到
first as say "d","e","a","t" etc.
尝试了这种方法,但显然缺少一些适用于 x[i] 的函数
x <- c("first","second","third"..)
for (i in 1:length(x)) {
x[i] <- sample(letters,4)
}
TIA
【问题讨论】:
我想使用向量中的字符作为字符对象的名称 目标是得到
first as say "d","e","a","t" etc.
尝试了这种方法,但显然缺少一些适用于 x[i] 的函数
x <- c("first","second","third"..)
for (i in 1:length(x)) {
x[i] <- sample(letters,4)
}
TIA
【问题讨论】:
你要找的函数是assign():
> x <- c("first","second","third")
> for (i in 1:length(x)) {
+ assign(x[i], sample(letters,4))
+ }
>
> ls()
[1] "first" "i" "second" "third" "x"
> first
[1] "t" "d" "u" "j"
> second
[1] "o" "i" "p" "l"
> third
[1] "w" "v" "r" "n"
作为替代方案,您可以将这些向量构建为列表的不同元素:
> mylist <- list()
> for (i in 1:length(x)) {
+ mylist[[x[i]]] <- sample(letters,4)
+ }
> mylist
$first
[1] "e" "l" "y" "d"
$second
[1] "t" "o" "k" "h"
$third
[1] "g" "x" "p" "b"
【讨论】:
你没有说你会用这个对象做什么。使用命名向量可以得到最简单的结构:
names(x) <- x
x[] <- sample(letters, 4)
如果您不在 LHS 上使用配对括号,整个向量将被替换,名称将丢失。您现在可以使用带引号的名称访问值:
> x
first second third fourth
"w" "c" "r" "x"
> x["second"]
second
"c"
【讨论】: