【问题标题】:r-concatenate for n elements from listr-连接列表中的 n 个元素
【发布时间】:2016-08-17 00:52:56
【问题描述】:

我正在尝试从列中读取数据,然后将我想要的信息连接成一个字符串。

到目前为止,我为单个字符串输入成功编写了 R 脚本,但我无法为 n 元素执行此操作。

reprows <- strsplit("Day1_XExp2B3_500x_Y_Z", "_", fixed = T)
lenreprows <- length(reprows[[1]])
temprepnamelisttopaste <- c(2:(lenreprows-2))
temprepname <- paste(sapply(reprows[temprepnamelisttopaste]),collapse='.')

每一行的数据看起来像:

Day1_XExp2B3_500x_Y_Z

我的输出应该是:

XExp2B3.500x

【问题讨论】:

    标签: r string list


    【解决方案1】:

    怎么样

    ## a function for re-concatenation
    rc <- function (u) paste0(u[2:(length(u)-2L)], collapse = ".")
    ## main code
    unlist(lapply(strsplit(x, "_", fixed = T), rc))
    

    其中x 是包含许多元素的字符列。我做了一个简单的测试

    x <- rep("Day1_XExp2B3_500x_Y_Z", 2)
    

    代码给出

    #[1] "XExp2B3.500x" "XExp2B3.500x"
    

    看起来工作正常。

    【讨论】:

      【解决方案2】:

      strsplit 会在您将向量传递给它时生成一个列表,因此您需要一个 *apply 函数来处理每个结果。正则表达式可能是更直接的选择,具体取决于您对字符串的了解:

      x <- c("Day1_XExp2B3_500x_Y_Z", "Day1_XExp2B3_500x_Y_Z")
      
      sub("\\w+_(\\w+)_(\\w+)_._.", "\\1.\\2", x)
      ## [1] "XExp2B3.500x" "XExp2B3.500x"
      

      【讨论】:

        猜你喜欢
        • 2014-04-18
        • 1970-01-01
        • 2017-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-11
        • 1970-01-01
        • 2016-11-04
        相关资源
        最近更新 更多