簡體   English   中英

R - 用於將列的文本拆分為新列的循環

[英]R - For loop for splitting column's text to new columns

我有 10 個數據框,其中包括氣候數據。 第 1 列是“日期”列,其中 class 是字符。 日期格式為“19 年 1 月 5 日”。 我想為我的所有數據框使用 for 循環將此列分成 3 個其他列。 首先,我創建了一個名為“onomata”的向量,其中包含數據框名稱:

onomata <- c("agia_paraskeui","ano_liosia","athens_gazi","marina",
         "kifisia","marousi","nea_smyrni","patisia","peristeri",
         "psychico")

然后我使用了來自tidyr package 的“單獨”function,並為一個數據幀測試了 function:

agia_paraskeui <- separate(agia_paraskeui, col = date,
                         into = c("day","month","year"), sep = "/")

它按應有的方式工作,然后我嘗試使用下一個 for 循環將其應用於所有數據幀:

    for(i in onomata){
  i <- separate(i, col = date,
                        into = c("day","month","year"), sep = "/")
}

它沒有用。 相反,我收到以下錯誤消息:

“UseMethod(“separate_”)錯誤:沒有適用於“separate_”的方法應用於 class“字符”的 object

你認為是什么問題?

如果需要在循環上應用,請使用map 對象名稱是字符串。 我們需要get對象的值。 如果有多個,請使用mget並返回list中對象的值。 循環遍歷list ,並separate應用

library(dplyr)
library(tidyr)
library(purrr)
map(mget(onomata), ~ separate(.x, col = date,
    into = c("day","month","year"), sep = "/"))

另外,有一個循環

out <- vector('list', length(onomata))
for(i in seq_along(onomata)) {
   out[[i]] <- separate(get(onomata[i]), col = date,
    into = c("day","month","year"), sep = "/")
  }

暫無
暫無

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

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