为新对象使用列名

问题描述

我有一个包含 5 列的数据框:两列是日期时间,其余三列包含数据。我想使用循环或无视函数,使用包含数据的列的名称创建 3 个新数据框。 这是我拥有的列的示例: enter image description here

例如,我想创建新对象,每个对象都称为 11.Q.29(或者如果有办法将其与文本结合,也欢迎该建议!),列日期和实际问,这样我就可以应用 Hydrostats 包。问题是是否有办法告诉 R 这样做,或者我必须为每一列手动执行?

预先感谢您的帮助!

解决方法

假设您有一个类似的数据框:

testing <- as.data.frame(matrix(sample(1:100,60,replace=TRUE),ncol=6))
names(testing) = c("date","time","10.Q.29","10.Q.30","10.Q.36","10.Q.63")

正如您所说,您想为特定列创建一个数据框。在这种情况下,目标是从第三个到第六个。

一种方法是只提取您想要的列:

posData = testing[,c(3:ncol(testing))]

为每个新数据框定义名称。请注意,我添加了一个前缀:

newDfName = paste("newDf",names(posData),sep="_")

然后,提取信息并通过使用为每列创建一个数据框 assign

for (i in 1:ncol(posData))
{
    tmpDf = as.data.frame(posData[,i])
    assign(newDfName[i],tmpDf)
}

您可以使用 ls() 来检查结果:

> ls()
[1] "i"             "newDf_10.Q.29" "newDf_10.Q.30" "newDf_10.Q.36" "newDf_10.Q.63" "newDfName"    
[7] "posData"       "testing"       "tmpDf"        
>