r - 使用变量对 data.table 进行子集化(当 varname 与 colname 相同时)

标签 r scope reference data.table subset

当变量名称与 data.table 中的现有列名称相同时,如何使用变量对 data.table 进行子集化?它与 get("varname",pos = 1) 配合使用,但是有更强大/灵活的解决方案吗?

library(data.table)

my_data_frame <- data.frame(
"V1"=c("A","B","C","A"),
"V2"=c(1, 2, 3, 4),
stringsAsFactors = FALSE        
)

V1 <- "A"

my_data_table <- as.data.table(my_data_frame)

# Can I improve this a bit? I want rows where V1 == "A", but use V1 in the statement 
my_data_table[ my_data_table$V1 == get("V1", pos = 1), ]

重命名V1不是一个选项。

更新:我不认为这是 100% 重复的。 this question 的接受答案对于我的问题来说是 Not Acceptable ,因为它使用了我不想使用的显式 get ,如评论中所述。

最佳答案

如果您不介意分两步完成,您可以在 data.table 的范围之外进行子集化(尽管这通常不是您在使用 时想要做的事情。 ..):

wh_v1 <- my_data_table[, V1]==V1
my_data_table[wh_v1]
#   V1 V2
#1:  A  1
#2:  A  4

关于r - 使用变量对 data.table 进行子集化(当 varname 与 colname 相同时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52475598/

相关文章:

r - 在R中将文件夹从一个目录复制到另一个目录

r - 听 shiny 中的 reactive() 失效?

c - R 中的作用域是如何完成的

c++ - 为什么不对类成员变量进行静态常量引用?

asp.net - 无法加载文件或程序集 'DotNetOpenAuth.AspNet' 或其依赖项之一

r - 在R中快速替换数据框中的值

r - 在 Ubuntu 14.04.1 LTS 上安装 R (3.1.0) 包插入符号时出错

javascript - ES5 中的 block 作用域

javascript - 在 jquery 对象列表上同时使用 array.concat() 和 .slice() 时丢失范围

android - 通过 Activity 中在 xml 中声明的 id 获取自定义 View 的引用