r - 将函数应用于数据框的子集但保留整个数据框

标签 r dataframe apply

我有一个数据框和一个标识我感兴趣的行的向量:

col1 <- c("June","June","June 11","June 11, 2012","June 14, 2012")
col2 <- c("September", "September", "October 8", "October", "Sept 27, 2012")
monthDF <- data.frame(cbind(col1, col2), stringsAsFactors = FALSE)
v0 <- c(1, 2)

我还有两个字符向量要应用于子集和特定列。

startMonthV <- paste(c(" 1, ", substr(Sys.Date(), 1, 4)), collapse = "")
endMonthV <- paste(c(" 28, ", substr(Sys.Date(), 1, 4)), collapse = "")

我已经尝试使用 apply() 函数的变体,其中 paste() 是我想使用的函数,但无济于事。我希望我的最终结果是一个包含所有行的数据框,但看起来像这样 - 前两行已使用上面的 startMonthV 和 endMonthV 进行了修改:

           col1                 col2
1  June 1, 2016   September 28, 2016
2  June 1, 2016   September 28, 2016
3       June 11            October 8
4 June 11, 2012              October
5 June 14, 2012        Sept 27, 2012

我是 R 的新手,想知道 apply() 系列是否可以,或者使用 plyr 包中的函数。我发现的任何 stackoverflow 答案要么适用于整个数据框,要么使用 aggregate() 函数折叠数据。

谢谢。

最佳答案

我们可以使用 mapply 并将结果分配回相应的行:

days <- c("1,", "28,")
monthDF[v0, ] <- mapply(paste, monthDF[v0, ], days, substr(Sys.Date(), 1, 4))
monthDF
           col1               col2
1  June 1, 2016 September 28, 2016
2  June 1, 2016 September 28, 2016
3       June 11          October 8
4 June 11, 2012            October
5 June 14, 2012      Sept 27, 2012

这里我们根据您想要附加到列的特定日期创建了一个向量 days

关于r - 将函数应用于数据框的子集但保留整个数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37757189/

相关文章:

r - ggplot2 在 aes 中使用 toupper

python - 如何有效地从多个 DataFrame 中获取单元格值以插入主 DataFrame

python - 如何从Python的行列表中选择特定元素

r - 如何为数据框的每一行创建列联表

python - 使用 df.apply 处理异常

r - 如何在 car::scatter3d 图中显示坐标网格

r - 在 R 中展平嵌套 JSON

R 动物园聚合

R:表和多维数组中的维名称

arrays - 从n,k维矩阵中减去n,k维矩阵