gpt4 book ai didi

R:动态创建变量名

转载 作者:行者123 更新时间:2023-12-02 04:28:58 26 4
gpt4 key购买 nike

我希望使用 for 循环创建多个数据帧,然后使用 merge() 将它们拼接在一起。

我可以使用assign(paste(), blah)创建我的数据框。但是,在同一个 for 循环中,我需要删除每个数据帧的第一列。

这是我的代码的相关部分:

for (j in 1:3)
{
#This is to create each data frame
#This works
assign(paste(platform, j, "df", sep = "_"), read.csv(file = paste(masterfilename, extension, sep = "."), header = FALSE, skip = 1, nrows = 100))

#This is to delete first column
#This does not work
assign(paste(platform, j, "df$V1", sep = "_"), NULL)
}

在第一种情况下,我将变量分配给数据框,因此它们继承该类型。但在第二种情况下,我将其分配给NULL

有人对我如何解决这个问题有任何建议吗?另外,是否有比 assign() 更优雅的解决方案,它似乎使我的代码陷入困境?谢谢,

n.i.

最佳答案

assign 可用于构建变量名称,但“name$V1”不是变量名称。 $ 是 R 中的一个运算符,因此您要尝试构建函数调用,而无法使用 assign 来执行此操作。事实上,在这种情况下,最好完全避免分配。您不需要创建一堆不同的变量。如果你的 data.frames 是相关的,只需将它们保存在一个列表中即可。

mydfs <- lapply(1:3, function(j) {
df<- read.csv(file = paste(masterfilename, extension, sep = "."),
header = FALSE, skip = 1, nrows = 100))
df$V1<-NULL
df
})

现在您可以使用 mydfs[[1]]mydfs[[2]] 等访问它们。并且您可以使用任何函数运行整个 data.sets 的函数*apply 函数系列的一部分。

关于R:动态创建变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24699989/

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