【问题标题】:Pass column as number into separate R将列作为数字传递到单独的 R
【发布时间】:2017-09-17 14:11:08
【问题描述】:

是否可以将col 变量作为数字传递给separate 函数?

?separate col 定义为Bare column name.

Dataframe <- data.frame(Time = rep("1:00 AM", times = 20), Place = rep("Wawa", times = 20))
Dataframe2 <- data.frame(Time2 = rep("1:00 AM", times = 20), Place = rep("Wawa", times = 20))
Data <- list(Dataframe , Dataframe2)

Dataframe %>% separate(col = Time, into = c("col_name_1NEW", "col_name_2NEW"), sep =" ") #works

Dataframe2 %>% separate(col = Time2, into = c("col_name_1NEW", "col_name_2NEW"), sep =" ") #works

for(i in 1:length(Data)){
Data[[i]] %>% separate(col = Time, into = c("col_name_1NEW", "col_name_2NEW"), sep =" ")
} #returns error because of wrong colum name for Data[[2]]

我想通过将col 参数作为列号而不是名称来使其更通用:

for(i in 1:length(Data)){
    Data[[i]] %>% separate(col = 1, into = c("col_name_1NEW", "col_name_2NEW"), sep =" ")
    }

【问题讨论】:

    标签: r dplyr data-cleaning


    【解决方案1】:

    尝试separate_ 将列名作为字符串传递:

    lapply(Data, function(i){
      separate_(i, col = colnames(i)[1],
                into = c("col_name_1NEW", "col_name_2NEW"),
                sep = " ")
      })
    

    【讨论】:

    • 我可以和%&gt;%一起使用吗?
    • 这只是一个功能,但如果您需要,i %&gt;% separate_(col = colnames(i)[1], ...
    • 我收到错误Error in UseMethod("separate_") : no applicable method for 'separate_' applied to an object of class "character"
    • @piotr 使用您的示例数据,我的解决方案有效。错误说您正在将字符传递给单独的,它需要一个数据框。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 2022-01-06
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 2012-12-24
    • 2013-10-15
    相关资源
    最近更新 更多