簡體   English   中英

循環多個數據框並使用膠水 R 保存列名

[英]loop through multiple dataframes and save column names using glue R

我正在嘗試從 R 中的多個數據幀中保存列名。我目前正在使用帶有 Glue 的字符串語法,但目前我只是不斷收到“NULL”

我在這里構建了一個示例。 我在下面有這兩個數據框:

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的數據框。 該向量沒有任何名稱,因此它返回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"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM