- 此问题在此处已有答案**:
Dynamically select data frame columns using $ and a character value(10个答案)
昨天关门了。
作为一个更大的函数的一部分,我尝试提取唯一的,非na值,这样我就可以迭代该列表,在这个函数中,用户应该能够输入他们的 Dataframe 中存在的任何列名。
在过去,当我必须将用户输入转换为字符串时,x_character <- deparse(substitute(x))
是有效的,但是现在我得到NULL作为下面函数的输出,并带有1: Unknown or uninitialised column: x
警告。
为什么R不能识别这个带$操作符的x_字符?它在过去是有效的,所以我不确定我在这里是否做错了什么。
#Sample data
library(dplyr)
my_data <- tibble(level = c(rep(c("1st", "2nd", NA, "3rd"), 4), NA, "2nd"),
id = c(1:17, 30),
score = c(81:97, 70))
下面是我的代码:
unique_without_na <- function(data, x) {
#Pulls out all rows with data in the cut_by argument; drops nas
x_character <- deparse(substitute(x))
print(x_character) #just a check
unique_x <- data$x_character[!is.na(data$x_character)] %>% unique()
unique_x
}
unique_without_na(my_data, level) #doesn't work; I've also tried "level" which also fails
unique_without_na(my_data, score) #also doesn't work
2条答案
按热度按时间1bqhqjot1#
将它们放在
[[
中,而不是使用$
yuvru6vn2#
或者使用
expr
和eval
,我们可以尝试以下操作。这里我们可以使用
$
代替[[
创建于2023年1月20日,使用reprex v2.0.2
输出