【问题标题】:Using character values as object names使用字符值作为对象名称
【发布时间】: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

【问题讨论】:

    标签: r vector


    【解决方案1】:

    你要找的函数是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"
    

    【讨论】:

      【解决方案2】:

      你没有说你会用这个对象做什么。使用命名向量可以得到最简单的结构:

      names(x) <- x
      x[] <- sample(letters, 4)
      

      如果您不在 LHS 上使用配对括号,整个向量将被替换,名称将丢失。您现在可以使用带引号的名称访问值:

      > x
       first second  third fourth 
         "w"    "c"    "r"    "x" 
      > x["second"]
      second 
         "c" 
      

      【讨论】:

        猜你喜欢
        • 2019-05-04
        • 2021-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-03
        • 1970-01-01
        相关资源
        最近更新 更多