我想对R中的每一列应用一个函数。假设以下是(3xn)的数据框:
df <- data.frame(
h1 = c(1,2,3),
h2 = c(2,3,1),
h3 = c(3,2,1),
h4 = c(1,2,3),
h5 = c(1,2,3)
)
rownames(df) <- c("e1", "e2", "e3")
df
# h1 h2 h3 h4 h5
# e1 1 2 3 1 1
# e2 2 3 2 2 2
# e3 3 1 1 3 3
如果我们要检查每列(h1,h2 ...)的前两个元素是否假设(e1 == 1,e2 == 2)。我们如何将检查功能应用于数据框中的每一列?
答案 0 :(得分:3)
根据babel-preset-react
或package.json
对数据行进行分组,将row.names
与值向量进行比较,获得逻辑{{1 }}从它派生,并检查它是否等于2,即每列的两个元素是否均为head
==
或者使用colSums
,在列matrix
上循环,应用函数(匿名函数调用),并从比较中检查TRUE
是否为colSums(mat[c("e1", "e2"),] == c(1, 2))==2
apply
答案 1 :(得分:3)
使用@ alex_jwb90的数据,
SELECT
答案 2 :(得分:0)
您可以尝试一下
(如果您删除了& row_number() <= 2
,则可以检查两行以上)
library(dplyr)
df = tibble(
h1 = c(1,2,3),
h2 = c(2,3,1),
h3 = c(3,2,1),
h4 = c(1,2,3),
h5 = c(1,2,3)
)
df %>%
mutate_all(
list(equals_rownum = ~.==row_number() & row_number() <= 2)
)
如果您不想创建新列<col>_equals_rownum
,而是替换h1,h2,...-列,只需在list
调用中删除名称即可。