我有一个函数可以在图上画出特定的线,定义为
MaxLines <- function(df,df_col_1,df_col_2){
data.frame(df_col_1 = c(rep(df$df_col_1[which.max(df$df_col_2)], 2),
-Inf),
df_col_2 = c(-Inf, rep(max(df$df_col_2), 2)))
}
当我试图调用这个函数时,我得到了标题中提到的错误。
col_1 = c(5,6,7)
col_2 = c(1,2,3)
foo <- data.frame(col_1,col_2)
MaxLines(foo,col_1,col_2)
------------------------------------------------
new_1 new_2
1 -Inf -Inf
2 -Inf -Inf
3 -Inf -Inf
Warning message:
In max(df$df_col_2) : no non-missing arguments to max; returning -Inf
我希望函数返回
| 列_1|第二栏|
| - ------|- ------|
| 七|- 推断|
| 七|三个|
| - 推断|三个|
但它没有。当直接输入到函数即。
MaxLines <- data.frame(col_1 = c(rep(foo$col_1[which.max(foo$col_2)], 2),
-Inf),
col_2 = c(-Inf, rep(max(foo$col_2), 2)))
我得到了正确的输出,所以看起来只是函数的调用。
2条答案
按热度按时间w1jd8yoj1#
Base R函数不允许传入未加引号的列名。您可以将符号转换为字符串
也可以传入字符串
ryevplcw2#
另一种解决方案:你会重复列名和参数,所以如果你把函数改成这样,它就可以工作了:
输出: