r - R - 用于将列文本拆分为新列的 For 循环
问题描述
我有 10 个数据框,其中包括气候数据。第 1 列是“日期”列,其类别为字符。日期格式为“19 年 1 月 5 日” 。我想为我的所有数据框使用 for 循环将此列分成 3 个其他列。首先,我创建了一个名为“onomata”的向量,其中包含数据框名称:
onomata <- c("agia_paraskeui","ano_liosia","athens_gazi","marina",
"kifisia","marousi","nea_smyrni","patisia","peristeri",
"psychico")
然后我使用了tidyr包中的“单独”函数,并针对一个数据帧测试了该函数:
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_' 的方法应用于“字符”类的对象
你认为是什么问题?
解决方案
如果需要将其应用于循环,请使用map
. 对象名称是字符串。我们需要get
对象的值。如果有多个,则使用mget
它并返回 a 中对象的值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 = "/")
}
推荐阅读
- microsoft-graph-api - 将 MS Graph 访问权限从一个帐户授予其他帐户 - 可能吗?
- javascript - 选择第一个可见元素的问题
- mongodb - 在mongodb中插入10000个数字元素怎么办?
- javascript - 如何录制 RTSP 流
- java - 如何从 Java 中的 mongo 连接器返回 xml?
- mysql - 具有属性的产品的数据模型,每个属性组合具有不同的价格
- android - google-services-auth 与 kommunicate 崩溃
- c++ - 如何使用 Boost 库构建 MEX 函数?
- python - Django:类型对象'CategoryAttributeInlineForm'没有属性:'_meta'
- json - 如何解析具有未知结构Golang的嵌套json文件