我是 R 新手,我正在尝试编写一个函数,该函数将逐行添加数据框的条目,并返回数据框
- 新行总和的一列
- 该列命名。
这是我的数据的示例df:
Ethnicity <- c('A', 'B', 'H', 'N', 'O', 'W', 'Unknown')
Texas <- c(2,41,56,1,3,89,7)
Tenn <- c(1,9,2,NA,1,32,3)
当我直接尝试以下代码时,列会根据需要按行求和:
new_df <- df %>% rowwise() %>%
mutate(TN_TX = sum(Tenn, Texas, na.rm = TRUE))
但是当我尝试使用我的函数代码时, rowwise() 似乎不起作用。我的功能代码是:
df.sum.col <- function(df.in, col.1, col.2) {
if(is.data.frame(df.in) != TRUE){ #warning if first arg not df
warning('df.in is not a dataframe')}
if(is.numeric(col.1) != TRUE){
warning('col.1 is not a numeric vector')}
if(is.numeric(col.2) != TRUE){
warning('col.2 is not a numeric vector')} #warning if col not numeric
df.out <- rowwise(df.in) %>%
mutate(name = sum(col.1, col.2, na.rm = TRUE))
df.out
}
bad_df <- df.sum(df,Texas, Tenn)
这导致
.
我不明白为什么函数的核心在它之外起作用,而不在内部起作用。我还尝试将 df.in 传递到 rowsum() ,如下所示:
f.out <- df.in %>% rowwise() %>%
mutate(name = sum(col.1, col.2, na.rm = TRUE))
但这并不能解决问题。
至于命名新列,我尝试通过添加名称作为参数来这样做,但没有任何成功。对此有什么想法?
任何帮助表示赞赏!