在R中有一个简单的方法吗?
plot(var1,var2, for all observations in the data frame where var3 < 155)
Run Code Online (Sandbox Code Playgroud)
可以通过创建新数据 newdata <- data[which( data$var3 < 155),]但我必须重新定义所有变量newvar1 <- newdata$var1等.
我理解如何对数据框进行排序:
df[order(df$Height),]
我理解如何过滤(或子集)匹配某个谓词的数据帧:
df[df$Weight > 120,]
但是我如何排序和过滤(例如,按高度排序并按重量过滤)?
我希望能够构建do.call子集化的公式,而不必识别输入数组中每个维度的实际范围.我遇到的问题是我无法弄清楚如何模仿直接函数x[,,1:n,],其他维度中没有条目意味着"抓住所有元素".
这是一些示例代码,它失败了.据我所知,[或者do.call用索引替换我的NULL列表值1.
x<-array(1:6,c(2,3))
dimlist<-vector('list', length(dim(x)))
shortdim<-2
dimlist[[shortdim]] <- 1: (dim(x)[shortdim] -1)
flipped <- do.call(`[`,c(list(x),dimlist))
Run Code Online (Sandbox Code Playgroud)
我想我可以通过-2*max(dim(x))为每个元素分配值来解决问题dimlist,但是很糟糕.
(FWIW,我有替代功能,可以通过melt/recast或者可怕的"构建一个字符串然后eval(parse(mystring)),但我想要做得更好"来完成所需的工作.")
编辑:作为一个旁边,我运行了这个代码的版本(相当于DWin的TRUE设置)对使用的函数melt & acast; 后者慢几倍,没有真正意外.
我有这个代码生成一个大小为4的数组的幂集(数字只是一个例子,更少的组合写...).
#define ARRAY_SIZE 4
unsigned int i, j, bits, i_max = 1U << ARRAY_SIZE;
int array[ARRAY_SIZE];
for (i = 0; i < i_max ; ++i) {
for (bits = i, j = 0; bits; bits >>= 1, ++j) {
if (bits & 1)
printf("%d", array[j]);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
{}
{1}
{2}
{1, 2}
{3}
{1, 3}
{2, 3}
{1, 2, 3}
{4}
{1, 4}
{2, 4}
{1, 2, 4}
{3, 4}
{1, 3, 4}
{2, 3, 4}
{1, 2, 3, …Run Code Online (Sandbox Code Playgroud) 我试图通过在我的数据帧中取2列的整数值来对数据帧进行子集化
Subs1<-subset(DATA,DATA[,2][!is.na(DATA[,2])] & DATA[,3][!is.na(DATA[,3])])
Run Code Online (Sandbox Code Playgroud)
但它给了我一个错误:较长的物体长度不是较短物体长度的倍数.
如何构建由第2列和第3列的非NA值组成的子集?
非常感谢?
当我filter从dplyr包中使用以删除因子变量的级别时,filter也会删除NA值.这是一个例子:
library(dplyr)
set.seed(919)
(dat <- data.frame(var1 = factor(sample(c(1:3, NA), size = 10, replace = T))))
# var1
# 1 <NA>
# 2 3
# 3 3
# 4 1
# 5 1
# 6 <NA>
# 7 2
# 8 2
# 9 <NA>
# 10 1
filter(dat, var1 != 1)
# var1
# 1 3
# 2 3
# 3 2
# 4 2
Run Code Online (Sandbox Code Playgroud)
这似乎并不理想 - 我只想把行放在哪里var1 == 1. …
我正试图解决一个棘手的R问题,我无法通过谷歌搜索关键字解决.具体来说,我试图采用一个子集,一个数据帧的值不会出现在另一个数据帧中.这是一个例子:
> test
number fruit ID1 ID2
item1 "number1" "apples" "22" "33"
item2 "number2" "oranges" "13" "33"
item3 "number3" "peaches" "44" "25"
item4 "number4" "apples" "12" "13"
> test2
number fruit ID1 ID2
item1 "number1" "papayas" "22" "33"
item2 "number2" "oranges" "13" "33"
item3 "number3" "peaches" "441" "25"
item4 "number4" "apples" "123" "13"
item5 "number3" "peaches" "44" "25"
item6 "number4" "apples" "12" "13"
item7 "number1" "apples" "22" "33"
Run Code Online (Sandbox Code Playgroud)
我有两个数据框,test和test2,目标是选择test2中未出现在测试中的所有整行,即使某些值可能相同.
我想要的输出看起来像:
item1 "number1" "papayas" "22" "33"
item2 "number3" "peaches" "441" "25" …Run Code Online (Sandbox Code Playgroud) 我有一个包含多行的数据框.我想stu2,stu3,stu5,stu9从这个数据帧中选择一些具有特定rownames(例如)的行.输入示例数据帧如下:
attr1 attr2 attr3 attr4
stu1 0 0 1 0
stu2 -1 1 -1 1
stu3 1 -1 0 -1
stu4 1 -1 1 -1
stu5 -1 1 0 1
stu6 1 -1 1 0
stu7 -1 -1 -1 1
stu8 1 -1 0 -1
stu9 -1 -1 1 -1
stu10 -1 1 0 1
Run Code Online (Sandbox Code Playgroud)
预期产量:
attr1 attr2 attr3 attr4
stu2 -1 1 -1 1
stu3 1 -1 0 -1
stu5 -1 1 0 1
stu9 -1 -1 …Run Code Online (Sandbox Code Playgroud) 我有一个小的DNA序列快速文件,看起来像这样:
>NM_000016 700 200 234
ACATATTGGAGGCCGAAACAATGAGGCGTGATCAACTCAGTATATCAC
>NM_000775 700 124 236
CTAACCTCTCCCAGTGTGGAACCTCTATCTCATGAGAAAGCTGGGATGAG
>NM_003820 700 111 222
ATTTCCTCCTGCTGCCCGGGAGGTAACACCCTGGACCCCTGGAGTCTGCA
Run Code Online (Sandbox Code Playgroud)
问题:
1)如何将此fasta文件读入R作为数据帧,其中每一行是序列记录,第一列是refseqID,第二列是序列.
2)如何在(开始,结束)位置提取子序列?
NM_000016 1 3 #"ACA"
NM_000775 2 6 #"TAACC"
NM_003820 3 5 #"TTC"
Run Code Online (Sandbox Code Playgroud) 对于以下数据
ds <- read.table(header = TRUE, text ="
id year attend
1 2007 1
1 2008 1
1 2009 1
1 2010 1
1 2011 1
8 2007 3
8 2008 NA
8 2009 3
8 2010 NA
8 2011 3
9 2007 2
9 2008 3
9 2009 3
9 2010 5
9 2011 5
10 2007 4
10 2008 4
10 2009 2
10 2010 NA
10 2011 NA
")
ds<- ds %>% dplyr::mutate(time=year-2000)
print(ds)
Run Code Online (Sandbox Code Playgroud)
如何编写dplyr :: filter()命令以仅保留没有单个NA的id?所以只有ids …