为新对象使用列名

Use column names for a new object

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

因此,例如我想创建一个新对象,每个对象都称为 11.Q.29(或者如果有办法将其与文本结合起来,也欢迎提出建议!),列日期和实际的 Q,以便我可以应用 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"        
>