我有以下df。
d<- data.frame (type=c("rna","rna","rna"), value = c(1,2,3) )
d2 <- data.frame (type=c("dna","dna"), value = c(20,30) )
d3 <- data.frame (type=c("protein","protein","protein"), value = c(-9.6,300, 1000) )
df <- rbind (d,d2,d3)
df$test = list ( c(0,12), 2, 3, 4,5,6,7, c(20,1) )
type value test
1 rna 1.0 0, 12
2 rna 2.0 2
3 rna 3.0 3
4 dna 20.0 4
5 dna 30.0 5
6 protein -9.6 6
7 protein 300.0 7
8 protein 1000.0 20, 1
我喜欢做的是从最高到最低排序列测试。但是因为test是一个列表,我喜欢做的只是使用max值。例如,第1行将使用值12进行排序,第8行将使用20进行排序。因此,如果我通过降序第8行进行测试,则第一行将跟随行第2行,依此类推。我可以在列是数字类型时进行排序,但是当列表是列表时,特别是当每个元素中有多个值时,我可以进行排序。感谢。
答案 0 :(得分:3)
您可以使用sapply(..., max)
从每个向量中提取最大值,然后按它排序:
df %>% arrange(desc(sapply(test, max)))
# type value test
#1 protein 1000.0 20, 1
#2 rna 1.0 0, 12
#3 protein 300.0 7
#4 protein -9.6 6
#5 dna 30.0 5
#6 dna 20.0 4
#7 rna 3.0 3
#8 rna 2.0 2
答案 1 :(得分:2)
使用tidyverse
工具:我们可以使用purrr::map_dbl
获取&#39;测试&#39;的max
值。列并在arrange(desc())
library(tidyverse)
df %>%
arrange(desc(map_dbl(test, max)))
# type value test
#1 protein 1000.0 20, 1
#2 rna 1.0 0, 12
#3 protein 300.0 7
#4 protein -9.6 6
#5 dna 30.0 5
#6 dna 20.0 4
#7 rna 3.0 3
#8 rna 2.0 2
df <- structure(list(type = structure(c(1L, 1L, 1L, 2L, 2L, 3L, 3L, 3L),
.Label = c("rna", "dna", "protein"), class = "factor"),
value = c(1, 2, 3, 20, 30, -9.6, 300, 1000),
test = list(c(0, 12), 2, 3, 4, 5, 6, 7, c(20, 1))),
row.names = c(NA, -8L), class = "data.frame")
答案 2 :(得分:2)
在基地R我们可以做
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 2020 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --sport 2020 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP