【问题标题】:How to get the column name with reference to an object in r如何参考r中的对象获取列名
【发布时间】:2017-02-17 12:50:30
【问题描述】:

我有多个 csv 文件,我想访问每个文件的第二列并执行一个正则表达式,它将删除“;”之后的所有字符串。此模式对于所有文件都是相同的。 我已经提到了这个 In R, how to get an object's name after it is sent to a function? 这是我的文件示例

ID  POLL
1   1,2:ksd ksj 
2   3:jj
3   6:ok0j

这是我尝试过的

 setwd("D:/Data/STN")
    temp = list.files(pattern="*.csv")

    for(i in 1:length(temp)){
      DF1=read.csv(temp[i])
      col2=colnames(DF1)[2]
      assign(paste(DF1,"$"),col2)
      DF1$col2 = gsub(":.*","",DF1$col2)

在 temp 中,我拥有所有文件的所有名称,我尝试使用 assign 但没有输出。 提前致谢

【问题讨论】:

    标签: r regex assign


    【解决方案1】:

    我们可以使用lapply来循环data.frames的list,并使用sub替换第二列中的后缀部分。

    lst1 <- lapply(lst, function(x) {x[,2] <- sub(":.*", "", x[,2])
                            x})
    

    如下所述,data.frames 被读入list

    数据

    temp <- list.files(pattern="*.csv") 
    lst <- lapply(temp, read.csv, stringsAsFactors=FALSE)
    

    【讨论】:

    • 给我一个错误“错误:意外';'在 "lapply(lst, function(x) {x[,2]
    • @Deepesh 一个错字,忘记了)。已更正
    • 但是数据框有什么问题,为什么你使用列表而不是数据框。这可以使用数据框完成吗?
    • @Deepesh 是的,当然,您可以在全局环境中创建 data.frame 对象,但这不是必需的,并且会创建很多对象,最后,您可能再次需要一些循环来编写回来了。相反,一切都可以在list 中完成
    猜你喜欢
    • 2021-04-01
    • 2017-01-23
    • 1970-01-01
    • 2013-04-07
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    • 2020-01-31
    • 2020-06-15
    相关资源
    最近更新 更多