【发布时间】:2021-02-05 19:21:27
【问题描述】:
我想将一个数据集子集为几个较小的 df,而 在 for 循环中使用列的名称。
创建一些数据(这可能更容易完成......)
Line1 <- c(1:7)
Line2 <- c(3:9)
df <- rbind(Line1, Line2)
ColumnNames <- c(paste0("Var", 1:7))
df <- lapply(df, setNames, ColumnNames)
colnames(df)=ColumnNames
作为输出,我想要三个数据框: Df_Sub1、Df_Sub2 和 Df_Sub3。
Sub1 <- c("Var1", "Var2", "Var3")
Sub2 <- c("Var3", "Var4")
Sub3 <- c("Var5", "Var6", "Var7")
Subs <- c("Sub1", "Sub2", "Sub3")
for循环创建三个子集
for (Sub in Subs) {
name <- as.name(paste0("df_",Sub))
df_ <- df[,colnames(df) %in% get(Sub)]
}
如何在 df_ 之后为三个 Subs 中的每一个添加名称(或做其他事情来完成这项工作)?
【问题讨论】:
-
第一次尝试使用
lapply设置名称失败,因为此时对象不是data.frame。另外,get的使用是不必要的。
标签: r dataframe for-loop subset columnname