[英]Splitting text column into ragged multiple new columns in a data table in 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.