【问题标题】:how to define the name of a new object with a string?如何用字符串定义新对象的名称?
【发布时间】:2014-08-30 11:52:43
【问题描述】:

我想定义一个字符串

string<- "modelName"

以后可以用它来命名一个对象。像

paste0(string) <- mtcars
cat(string) <- mtcars
print(string) <- mtcars
get(string) <- mtcars

所需的结果是名为“modelName”的数据集。显然,上述示例都不起作用。

问题:

如何创建一个名称由源字符串定义的对象?

【问题讨论】:

  • 您可以使用assign。所以assign(string, mtcars).
  • 当我这样做时 (a
  • 请注意,这是常见问题解答 7.21,其中最重要的部分是它说不这样做的结尾(正如@jdharrison 所指出的答案)

标签: r function naming base data-manipulation


【解决方案1】:

正如@Spacedman 所指出的,这通常不是做事的方式,但您可以使用assign

string<- "modelName"

assign(string, mtcars)

> head(modelName)
                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

一般来说,最好使用列表之类的东西:

x <- list()
x[[string]] <- mtcars
> head(x$modelName)
                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-04
  • 2019-05-04
  • 2020-05-28
  • 1970-01-01
  • 2017-09-08
  • 1970-01-01
相关资源
最近更新 更多