我有一个包含一堆列的数据表,例如:
dt<-data.table(matrix(runif(10*10),10,10))
Run Code Online (Sandbox Code Playgroud)
我想对数据表执行一些操作,例如生成相关矩阵(cor(dt)).为此,我想删除一些包含非数字值或某个范围之外的值的列.
假设我想找到不包括V1,V2,V3和V5的相关矩阵.
这是我目前的做法:
cols<-!(colnames(dt)=="V1" | colnames(dt)=="V2" | colnames(dt)=="V3" | colnames(dt)=="V5")
new_dt<-subset(dt,,cols)
cor(new_dt)
Run Code Online (Sandbox Code Playgroud)
考虑到data.table语法通常很优雅,我发现这非常麻烦.有没有更好的方法呢?
我有两个数据集应该是相同的大小但不是.我需要修剪A中不在B中的值,反之亦然,以消除进入报告的图形中的噪声.(别担心,这些数据没有被永久删除!)
我看过以下内容:
但是我仍然无法使其正常工作.这是我的代码:
bg2011missingFromBeg <- setdiff(x=eg2011$ID, y=bg2011$ID)
#attempt 1
eg2011cleaned <- subset(eg2011, ID != bg2011missingFromBeg)
#attempt 2
eg2011cleaned <- eg2011[!eg2011$ID %in% bg2011missingFromBeg]
Run Code Online (Sandbox Code Playgroud)
第一次尝试只是消除了生成的setdiff向量中的第一个值.第二次尝试产生并且笨拙的错误:
Error in `[.data.frame`(eg2012, !eg2012$ID %in% bg2012missingFromBeg)
: undefined columns selected
Run Code Online (Sandbox Code Playgroud)