循环遍历多个数据框并使用胶水 R 保存列名
loop through multiple dataframes and save column names using glue R
我正在尝试从 R 中的多个数据帧中保存列名。我目前正在使用 Glue 的字符串语法,但目前我只是不断得到 'NULLs'
我在这里构造了一个例子。我在下面有这两个数据框:
over50_one <- c("n", "n", "n", "y", "n")
Gender_one <- c("F", "F", "M", "M", "F")
Name_one <- c("Jon", "Bill", "Maria", "Ben", "Tina")
Age_one <- c(23, 41, 32, 58, 26)
df_one <- data.frame(Name_one, Age_one,Gender_one,over50_one)
over50_two <- c("n", "n", "n", "y", "n")
Gender_two <- c("F", "F", "M", "M", "F")
Name_two <- c("Jon", "Bill", "Maria", "Ben", "Tina")
Age_two <- c(23, 41, 32, 58, 26)
df_two <- data.frame(Name_two, Age_two,Gender_two,over50_two)
我创建了这个循环来将列名保存到 'names':
list_loop <- c('one','two')
for(number in list_loop) { # Head of for-loop
print(number)
names <- names(glue('df_{number}'))
print(names)
}
但是我得到的名称输出是 NULL,当我应该得到 over50_one、gender_one、name_one 等等等等。任何帮助都会很棒。
这里发生了几件事。首先,您正在调用您的对象 names
,这也是您正在调用的函数的名称。这将在循环的第一次迭代后给您带来问题。您应该将其命名为 my_names
或类似名称。
其次,当您执行 names(glue('df_{number}'))
时,您在第一次迭代时执行 names('df_one')
,即包含一个元素的字符向量的名称,而不是名为 df_one
的数据框.该向量没有任何名称,因此它 returns NULL
.
而不是使用 glue
,我会这样做:
list_loop <- ls(pattern = "^df_")
for(my_df in list_loop) {
print(my_df) # Head of for-loop
my_names <- names(get(my_df))
print(my_names)
}
# [1] "df_one"
# [1] "Name_one" "Age_one" "Gender_one" "over50_one"
# [1] "df_two"
# [1] "Name_two" "Age_two" "Gender_two" "over50_two"
我正在尝试从 R 中的多个数据帧中保存列名。我目前正在使用 Glue 的字符串语法,但目前我只是不断得到 'NULLs'
我在这里构造了一个例子。我在下面有这两个数据框:
over50_one <- c("n", "n", "n", "y", "n")
Gender_one <- c("F", "F", "M", "M", "F")
Name_one <- c("Jon", "Bill", "Maria", "Ben", "Tina")
Age_one <- c(23, 41, 32, 58, 26)
df_one <- data.frame(Name_one, Age_one,Gender_one,over50_one)
over50_two <- c("n", "n", "n", "y", "n")
Gender_two <- c("F", "F", "M", "M", "F")
Name_two <- c("Jon", "Bill", "Maria", "Ben", "Tina")
Age_two <- c(23, 41, 32, 58, 26)
df_two <- data.frame(Name_two, Age_two,Gender_two,over50_two)
我创建了这个循环来将列名保存到 'names':
list_loop <- c('one','two')
for(number in list_loop) { # Head of for-loop
print(number)
names <- names(glue('df_{number}'))
print(names)
}
但是我得到的名称输出是 NULL,当我应该得到 over50_one、gender_one、name_one 等等等等。任何帮助都会很棒。
这里发生了几件事。首先,您正在调用您的对象 names
,这也是您正在调用的函数的名称。这将在循环的第一次迭代后给您带来问题。您应该将其命名为 my_names
或类似名称。
其次,当您执行 names(glue('df_{number}'))
时,您在第一次迭代时执行 names('df_one')
,即包含一个元素的字符向量的名称,而不是名为 df_one
的数据框.该向量没有任何名称,因此它 returns NULL
.
而不是使用 glue
,我会这样做:
list_loop <- ls(pattern = "^df_")
for(my_df in list_loop) {
print(my_df) # Head of for-loop
my_names <- names(get(my_df))
print(my_names)
}
# [1] "df_one"
# [1] "Name_one" "Age_one" "Gender_one" "over50_one"
# [1] "df_two"
# [1] "Name_two" "Age_two" "Gender_two" "over50_two"