保存数据帧名称,然后在后续代码中引用该对象

发布于 2025-01-26 07:54:08 字数 793 浏览 1 评论 0原文

想引用存储在对象中的数据框架名称,例如:

dfName <- 'mydf1'
dfName <- data.frame(c(x = 5)) #want dfName to resolve to 'mydf1', not create a dataframe named 'dfName'
mydf1

相反:我得到:错误:object'mydf1'找不到

更正的方案:

olddf <- data.frame(c(y = 8)) 
mydf1 <- data.frame(c(x = 5))
assign('dfName', mydf1)
dfName <- olddf #why isnt this the same as doing "mydf1 <- olddf"?

我不想引用名为“ dfname “,而是”,“ mydf1”。

更新 我为我想做的事情找到了一个笨拙的解决方法。代码是:

olddf <- data.frame(x = 8)
olddfName <- 'olddf'
newdfName <- 'mydf1'
statement <- paste(newdfName, "<-", olddfName, sep = " ")
writeLines(statement, "mycode.R")
source("mycode.R")           

任何人都有更优雅的方式,尤其是不诉诸写/来源的情况?

Would like to reference a dataframe name stored in an object, such as:

dfName <- 'mydf1'
dfName <- data.frame(c(x = 5)) #want dfName to resolve to 'mydf1', not create a dataframe named 'dfName'
mydf1

Instead, I get: Error: object 'mydf1' not found

CORRECTED SCENARIO:

olddf <- data.frame(c(y = 8)) 
mydf1 <- data.frame(c(x = 5))
assign('dfName', mydf1)
dfName <- olddf #why isnt this the same as doing "mydf1 <- olddf"?

I don't want to reference an actual dataframe named "dfName", rather "mydf1".

UPDATE
I have found a clunky workaround for what I wanted to do. The code is:

olddf <- data.frame(x = 8)
olddfName <- 'olddf'
newdfName <- 'mydf1'
statement <- paste(newdfName, "<-", olddfName, sep = " ")
writeLines(statement, "mycode.R")
source("mycode.R")           

Anyone have a more elegant way, especially without resorting to a write/source?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

↘人皮目录ツ 2025-02-02 07:54:08

我猜您想将多个data.frame s存储在循环中或类似过程中。在这种情况下,将它们存储在命名list中更加有效,并且更好。但是,您可以通过分配来实现自己的目标

assign('mydf1', data.frame(x = 5))
mydf1
  x
1 5

I am guessing you want to store multiple data.frames in a loop or similar. In that case it is much more efficient and better to store them in a named list. However, you can achieve your goal with assign

assign('mydf1', data.frame(x = 5))
mydf1
  x
1 5
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文