【发布时间】:2019-09-15 01:39:52
【问题描述】:
是否可以使用管道对数据帧的单行执行 dplyr 操作?例如,假设我有以下一个数据框(称为 df)并希望对该数据框的列进行一些操作:
df <- df %>%
mutate(col1 = col1 + col2)
此代码将一列设置为该列与另一列的总和。如果我想这样做,但只针对单行怎么办?
df[1,] <- df[1,] %>%
mutate(col1 = col1 + col2)
我意识到这在基础 R 中是一个简单的操作,但我非常好奇并且很想使用 dplyr 操作和管道来实现这一点。这是可能的还是违反 dplyr 语法?
这是一个例子。假设我有一个数据框:
df = data.frame(a = rep(1, 100), b = rep(1,100))
我展示的第一个例子:
df <- df %>%
mutate(a = a + b)
将导致所有行的 a_xPlacexHolderxColumnaPlacexHolderx_ 列为 2。
第二个示例只会导致列 a_xPlacexHolderxColumnaPlacexHolderx_ 的第一行为 2。
【问题讨论】:
-
FWIW,
data.table做得很好:setDT(df)将df转换为data.table,然后df[1, a := a + b]将更新a为仅在第一行中的a + b.