我在一个函数中使用多个dplyr函数时遇到了问题,尽管我使用了函数变体。
示例
library(dplyr)
# Data:
mydf <- data.frame(
var1 = factor(rep(1:24, each = 100)),
var2 = runif(2400, min = -10, max = 125),
var3 = runif(2400, min = 0, max = 2500),
var4 = runif(2400, min = - 10, max = 25)
)
# The function I want
我有一个数据帧列表,我想删除所有colsum小于等于4的列。所以我只想保留colsum为5或更大的列。下面是我的测试样本。
我使用此代码删除列。
NEWTEST = NULL
for (a in 1:length(TEST)) {
NEWTEST = colSums(TEST[[a]])
index = which(NEWTEST > 4)
TEST[[a]] = TEST[[a]][,index]}
#Change all in dataframes again
for (a in 1:length(TEST)) {
TEST[[a]] = as.data.frame
我正在尝试学习dplyr包,到目前为止还不错。我在这里遇到了一个问题,这肯定与语法有关,因为它很容易解决
我的数据框显示为
我想从第四列开始添加每个项目的所有订单(从第4列到第17列)
该列应如下所示
ITEM#订单总数
1 2396
1 2396
2445
2445
group_by(`ITEM`) %>%
do({
distinct(`DESCRIPTION`);
mutate(Total = rowSums(.[,4:17]))
})
This is definitely wrong as it says Description not found. Any
我正在寻找一种简单的方法来让我的函数与来自Shiny的输入(即字符串输入)一起工作,或者与典型的交互式使用,即Tidyverse函数启用NSE。不需要重复我的代码来单独处理每种情况。 一个用法示例: library(dplyr)
flexible_input <- function(var){
mtcars %>%
select(var)
}
# This works for NSE
nse_input <- function(var){
mtcars %>%
select({{ var }})
}
# This works for
我想创建一个新的列,条件是"if Temperatur > 80 show hot in row,否则在行中显示冷“ 这是我的代码: tempcat_aq <- aq %>% group_by(aq$Temp) %>% mutate(TempCat = if(any(aq$Temp > 80) "hot" else "cold")) 我正在使用R中内置的airquality数据帧和dplyr库。 谢谢你帮我的忙。
我理解dplyr::if_else()和基本ifelse()之间的主要区别:在前者中,对真假结果进行严格的类型检查。
然而,我注意到了另一个不同之处,我想知道这是我想要的行为还是我做错了。
下面是一些简单的代码:
library(dplyr)
choose_number <- function() {
n <- readline("Choose a number between 1 and 4: ")
n <- as.integer(n)
if (between(n, 1, 4)) { return(n) }
else { return(NA