我有2个对象:
包含3个变量的数据框:
v1 <- 1:10
v2 <- 11:20
v3 <- 21:30
df <- data.frame(v1,v2,v3)
Run Code Online (Sandbox Code Playgroud)
包含3个元素的数字向量:
nv <- c(6,11,28)
Run Code Online (Sandbox Code Playgroud)
我想将第一个变量与第一个数字进行比较,将第二个变量与第二个数字进行比较,依此类推.
which(df$v1 > nv[1])
which(df$v2 > nv[2])
which(df$v3 > nv[3])
Run Code Online (Sandbox Code Playgroud)
当然,实际上我的数据框有更多变量,因此手动输入每个变量不是一个选项.
我经常遇到这些问题.我需要阅读哪些文件才能熟练掌握这些问题?
一种选择是与同等大小的元素进行比较.为此,我们可以通过'df'(rep(nv, each=nrow(df)))的行数来复制'nv'中的元素,并与df使用col类似输出的函数进行比较或使用rep.
which(df > nv[col(df)], arr.ind=TRUE)
Run Code Online (Sandbox Code Playgroud)
如果您需要一个逻辑矩阵,该矩阵对应于每个列与'nv'的每个元素的比较
sweep(df, 2, nv, FUN='>')
Run Code Online (Sandbox Code Playgroud)