gpt4 book ai didi

r - 如何转换多个数据框中的列格式?

转载 作者:行者123 更新时间:2023-12-02 09:26:49 24 4
gpt4 key购买 nike

我有几个数据框,其中一些列共享相同的名称。我试图找到一种方法来系统地更改不同数据框中具有相同名称的列的格式。这是我想到的:

data1=data.frame(a=seq(1:10),b=c("a","b"))
data2=data.frame(a=seq(11:20),b=c("c","d"))

temp = c("data1$a","data2$a")

for (i in 1:length(temp)) {
eval(parse(text=(temp)[i])) = as.character(eval(parse(text=(temp)[i])))
}

运行代码后,我收到以下消息:

Error in file(filename, "r") : cannot open the connection
In addition: Warning message:
In file(filename, "r") :
cannot open file 'data1$a': No such file or directory

但是,如果我运行以下代码,它就会起作用:

as.character(eval(parse(text=(temp)[1])))

有人可以帮助纠正我的代码并解释为什么它不起作用吗?

最佳答案

在我看来,您正在混合数据处理的“独立性”和“系统性”。换句话说,您尝试在全局环境中单独存储多个数据对象,但也尝试系统地使用它们。我建议这是一个错误。您应该选择一种数据处理方法,并坚持下去。

1:分离性

这个很简单。只需单独存储 data.frames(这正是您正在做的事情),然后单独修改它们:

data1 <- data.frame(a=seq(1:10),b=c('a','b'));
data2 <- data.frame(a=seq(11:20),b=c('c','d'));

data1$a <- as.character(data1$a);
data2$a <- as.character(data2$a);

2:系统性

这需要从一开始就将数据存储在列表中。这可能会稍微增加某些代码的冗长性,因为您必须取消引用列表才能访问各个 data.frames,但它有助于您正在寻找的系统数据处理,这可以消除大量重复代码:

data <- list(
data.frame(a=seq(1:10),b=c('a','b')),
data.frame(a=seq(11:20),b=c('c','d'))
);

for (i in seq_along(data)) data[[i]]$a <- as.character(data[[i]]$a);

正如您所看到的,这些方法中的每一种都减少了使用困惑的解析/评估解决方案的需要。通常这种动态代码生成、解析和评估是不必要的。

关于r - 如何转换多个数据框中的列格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37246159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com