英文:
Sankey plot with plotly in R: how do I get the plot to skip over the NAs and not try to plot dead ends of some nodes?
问题
我已翻译代码和数据的主要部分,如下所示:
#输出结构细节
str(sank_test)
'data.frame': 168 obs. of 12 variables:
$ GobySpecies: int 1 1 1 1 1 1 1 2 2 2 ...
$ X2014 : chr "An4" "Ate4" "Ate4" "Ate4" ...
$ X2015 : chr "Ate5" "Ate5" "Ate5" "Ate5" ...
$ X2016 : chr "An6" "Ate6" "Ate6" "Ate6" ...
$ X2018 : chr "An8" "Ate8" "Av8" "Ac8" ...
$ X2020 : chr "" "" "" "" ...
$ n : int 10 29 12 29 12 1 7 25 18 4 ...
$ color : chr "red" "red" "red" "red" ...
$ color.1 : chr "red" "red" "red" "red" ...
$ color.2 : chr "red" "red" "red" "red" ...
$ color.3 : chr "red" "red" "red" "red" ...
$ color.4 : chr "red" "red" "red" "red" ...
list.of.packages <- c("ggplot2","plotly","dplyr")
new.packages <- list.of.packages[!(list.of.packages %in% installed.packages()[,"Package"])]
if(length(new.packages)) install.packages(new.packages)
#load specific packages of interest
lapply(list.of.packages,library,character.only = TRUE)
nodes_test <- data.frame(name = unique(c(as.character(sank_test$GobySpecies),
as.character(sank_test$X2014),
as.character(sank_test$X2015),
as.character(sank_test$X2016),
as.character(sank_test$X2018),
as.character(sank_test$X2020))))
# create links_test dataframe
links_test <- data.frame(source = match(sank_test$GobySpecies, nodes_test$name) - 1,
target = match(sank_test$X2014, nodes_test$name) - 1,
value = sank_test$n,
stringsAsFactors = FALSE)
links_test <- rbind(links_test,
data.frame(source = match(sank_test$X2014, nodes_test$name) - 1,
target = match(sank_test$X2015, nodes_test$name) - 1,
value = sank_test$n,
stringsAsFactors = FALSE))
links_test <- rbind(links_test,
data.frame(source = match(sank_test$X2015, nodes_test$name) - 1,
target = match(sank_test$X2016, nodes_test$name) - 1,
value = sank_test$n,
stringsAsFactors = FALSE))
links_test <- rbind(links_test,
data.frame(source = match(sank_test$X2016, nodes_test$name) - 1,
target = match(sank_test$X2018, nodes_test$name) - 1,
value = sank_test$n,
stringsAsFactors = FALSE))
links_test <- rbind(links_test,
data.frame(source = match(sank_test$X2018, nodes_test$name) - 1,
target = match(sank_test$X2020, nodes_test$name) - 1,
value = sank_test$n,
stringsAsFactors = FALSE))
plot_ly(
type = "sankey",
orientation = "h",
node = list(pad = 15,
thickness = 20,
line = list(color = "black", width = 0.5),
label = nodes_test$name,color="black"),
link = list(source = links_test$source,
target = links_test$target,
value = links_test$value,color = c(sank_test$color,sank_test$color.1,sank_test$color.2,sank_test$color.3,sank_test$color.4)),
textfont = list(size = 10),
width = 1000,
height = 480
)
# Code
#make node colors same as link colors
plot_ly(
type = "sankey",
orientation = "...
请注意,由于限制,我无法提供完整的代码和输出。如果您需要更多帮助或有其他问题,请告诉我。
英文:
I created a sankey plot with Plotly in R. I am happy with the color match up between the links and nodes (purposely only have the first column of nodes to be color matched up, and rest of the columns to be in black). However, some nodes are supposed to have dead ends for some links, which for some reason is not plotting correctly. Instead, my code is making a full loop and added a new node there (or shifted it over) for that loop (see bottom right corner with the purple, blue and yellow etc. looping). How do I get rid of that? You'll notice my dataframe has blanks in the columns where it should dead end. Later down in this question, I show that I figured out how to get rid of that looping node, but then I lost the follow up data (species 2 in orange), see below. Thanks in advance.
Here is the head and tail of my data and then my code below. Each color corresponds to a specific GobySpecies for links and matches up with the node coloring that I added in my code in the plot_ly function:
head(sank_test,100)
GobySpecies X2014 X2015 X2016 X2018 X2020 n color color.1 color.2 color.3
1 1 An4 Ate5 An6 An8 10 red red red red
2 1 Ate4 Ate5 Ate6 Ate8 29 red red red red
3 1 Ate4 Ate5 Ate6 Av8 12 red red red red
4 1 Ate4 Ate5 Ate6 Ac8 29 red red red red
5 1 Ate4 Ate5 Ate6 Al8 12 red red red red
6 1 Ate4 Ate5 An6 An8 1 red red red red
7 1 Ate4 Ate5 Ate6 An8 7 red red red red
8 2 An4 An5 An6 An20 25 orange orange orange orange
9 2 Am4 Am5 Am6 Ac20 18 orange orange orange orange
10 2 Am4 An5 Am6 Aspp20 4 orange orange orange orange
11 2 An4 Ac5 Ac6 Ac20 6 orange orange orange orange
12 2 An4 An5 Ac6 Ac20 5 orange orange orange orange
13 2 An4 An5 Ag6 Ase20 2 orange orange orange orange
14 2 An4 An5 Ag6 Ac20 20 orange orange orange orange
15 2 An4 An5 Al6 Al20 2 orange orange orange orange
16 2 An4 An5 Al6 Ac20 4 orange orange orange orange
17 2 An4 Av5 Av6 Ac20 6 orange orange orange orange
18 2 An4 An5 An6 Ac20 8 orange orange orange orange
19 3 Am4 Am5 Am6 6 yellow yellow yellow yellow
20 3 Ato4 Ato5 Ato6 5 yellow yellow yellow yellow
21 3 Aspp4 Aspp5 Aspp6 12 yellow yellow yellow yellow
22 3 Am4 Am5 Ag6 7 yellow yellow yellow yellow
23 3 Ato4 Am5 Ato6 3 yellow yellow yellow yellow
24 3 Aspp4 Aspp5 Ato6 1 yellow yellow yellow yellow
25 3 Ato4 Aspp5 Ato6 8 yellow yellow yellow yellow
26 3 Ato4 An5 An6 29 yellow yellow yellow yellow
27 3 Ato4 Ag5 Ag6 13 yellow yellow yellow yellow
28 3 Ato4 Ar5 Ag6 3 yellow yellow yellow yellow
29 3 Ato4 Ate5 Ag6 5 yellow yellow yellow yellow
30 3 Ato4 Av5 Ag6 1 yellow yellow yellow yellow
31 3 Ato4 Av5 Ato6 2 yellow yellow yellow yellow
32 3 Ato4 Ac5 Ato6 5 yellow yellow yellow yellow
33 4 Ac4 Ac5 Ac6 Ac8 Ac20 1 green green green green
34 4 Al4 Al5 Al6 Al8 Al20 7 green green green green
35 4 Ar4 Ar5 Ar6 Ar8 Ar20 2 green green green green
36 4 Ate4 Ate5 Ate6 Ate8 Ate20 3 green green green green
37 4 An4 An5 An6 An8 Ac20 5 green green green green
38 4 Al4 Av5 Av6 Av8 Av20 9 green green green green
39 4 Al4 Al5 Al6 Ag8 Ac20 10 green green green green
40 4 Ate4 Ate5 Ato6 Ate8 Ate20 1 green green green green
41 4 Aspp4 Ar5 Al6 Ate8 Aspp20 3 green green green green
42 4 Ar4 Ar5 Av6 Ar8 Av20 1 green green green green
43 4 Ac4 Al5 Al6 Ac8 Ac20 2 green green green green
44 4 An4 An5 Al6 An8 Ac20 4 green green green green
45 4 Ate4 Ate5 Al6 Ate8 Ate20 5 green green green green
46 4 Al4 Al5 Al6 Al8 Ac20 2 green green green green
47 4 An4 Al5 Al6 Ar8 Aspp20 6 green green green green
48 4 Ate4 Av5 Av6 Ate8 Ase20 2 green green green green
49 4 Al4 Al5 Al6 Ac8 Ac20 6 green green green green
50 4 An4 Al5 Al6 Ac8 Ac20 2 green green green green
51 4 Ate4 Ar5 Al6 Ate8 Av20 13 green green green green
52 4 Ate4 Av5 Al6 Ac8 Av20 5 green green green green
53 4 An4 Al5 Al6 Ac8 Aspp20 6 green green green green
54 4 Ate4 Av5 Al6 Ac8 Aspp20 3 green green green green
55 4 Ate4 Al5 Al6 Ac8 Aspp20 2 green green green green
56 5 Ac4 Ac5 Ac6 Ac8 Ac20 5 cyan cyan cyan cyan
57 5 An4 An5 An6 An8 An20 10 cyan cyan cyan cyan
58 5 Ate4 Ate5 Ate6 Ate8 Ate20 1 cyan cyan cyan cyan
59 5 Ag4 Ag5 Ag6 Ac8 Ac20 1 cyan cyan cyan cyan
60 5 Ag4 Ag5 Ac6 Ac8 Ac20 2 cyan cyan cyan cyan
61 5 Ate4 Ate5 Ate6 Ate8 Ac20 2 cyan cyan cyan cyan
62 5 Ate4 Ate5 Al6 Ate8 Ac20 4 cyan cyan cyan cyan
63 5 Al4 Al5 Al6 Ac8 Al20 1 cyan cyan cyan cyan
64 5 Al4 Al5 Al6 Ac8 Ac20 1 cyan cyan cyan cyan
65 5 Ate4 Am5 An6 Ate8 Ac20 4 cyan cyan cyan cyan
66 5 Aspp4 Av5 Av6 Aspp8 Aspp20 1 cyan cyan cyan cyan
67 5 Aspp4 Al5 Al6 Aspp8 Aspp20 2 cyan cyan cyan cyan
68 5 Am4 Am5 Am6 Ate8 Ac20 32 cyan cyan cyan cyan
69 5 An4 An5 An6 Ac8 An20 10 cyan cyan cyan cyan
70 5 An4 An5 An6 Ac8 Ac20 11 cyan cyan cyan cyan
71 5 An4 An5 Av6 Ase8 Ase20 1 cyan cyan cyan cyan
72 5 An4 An5 Av6 Ase8 Ar20 1 cyan cyan cyan cyan
73 5 An4 An5 Av6 Ase8 Ac20 3 cyan cyan cyan cyan
74 5 An4 Ac5 Al6 Ac8 Ac20 2 cyan cyan cyan cyan
75 5 An4 An5 Al6 Ate8 Ac20 1 cyan cyan cyan cyan
76 5 An4 An5 Ac6 Ate8 Ac20 3 cyan cyan cyan cyan
77 5 Am4 Am5 Av6 Aspp8 Ac20 1 cyan cyan cyan cyan
78 5 Am4 Am5 Aspp6 Aspp8 Ac20 1 cyan cyan cyan cyan
79 6 Am4 Am5 Am6 50 blue blue blue blue
80 6 An4 An5 An6 14 blue blue blue blue
81 6 Ag4 Ag5 Am6 4 blue blue blue blue
82 6 Ac4 Am5 Am6 4 blue blue blue blue
83 6 Aspp4 Am5 Am6 4 blue blue blue blue
color.4
1 red
2 red
3 red
4 red
5 red
6 red
7 red
8 orange
9 orange
10 orange
11 orange
12 orange
13 orange
14 orange
15 orange
16 orange
17 orange
18 orange
19 yellow
20 yellow
21 yellow
22 yellow
23 yellow
24 yellow
25 yellow
26 yellow
27 yellow
28 yellow
29 yellow
30 yellow
31 yellow
32 yellow
33 green
34 green
35 green
36 green
37 green
38 green
39 green
40 green
41 green
42 green
43 green
44 green
45 green
46 green
47 green
48 green
49 green
50 green
51 green
52 green
53 green
54 green
55 green
56 cyan
57 cyan
58 cyan
59 cyan
60 cyan
61 cyan
62 cyan
63 cyan
64 cyan
65 cyan
66 cyan
67 cyan
68 cyan
69 cyan
70 cyan
71 cyan
72 cyan
73 cyan
74 cyan
75 cyan
76 cyan
77 cyan
78 cyan
79 blue
80 blue
81 blue
82 blue
83 blue
tail(sank_test,80)
GobySpecies X2014 X2015 X2016 X2018 X2020 n color color.1 color.2 color.3
89 6 Ag4 Av5 Av6 2 blue blue blue blue
90 6 Ag4 Al5 Ato6 2 blue blue blue blue
91 7 Ac4 Ac5 Ac6 Ac8 Ac20 8 purple purple purple purple
92 7 An4 An5 An6 Ac8 An20 10 purple purple purple purple
93 7 An4 An5 An6 Ac8 Ac20 42 purple purple purple purple
94 7 Ac4 Ar5 Ac6 Ate8 Ate20 1 purple purple purple purple
95 7 Ac4 Ato5 Ac6 Ate8 Ate20 1 purple purple purple purple
96 7 Al4 Al5 Al6 Av8 Al20 2 purple purple purple purple
97 7 Am4 Am5 Am6 Av8 Av20 2 purple purple purple purple
98 7 An4 Al5 Av6 Av8 Av20 2 purple purple purple purple
99 7 An4 Al5 Al6 Av8 Ac20 8 purple purple purple purple
100 7 Aspp4 An5 Am6 Ate8 Aspp20 2 purple purple purple purple
101 7 An4 Am5 Am6 Ate8 Al20 1 purple purple purple purple
102 7 An4 Am5 Am6 Ate8 Av20 1 purple purple purple purple
103 7 An4 Am5 Am6 Ate8 Aspp20 1 purple purple purple purple
104 7 An4 An5 Av6 Av8 Ac20 1 purple purple purple purple
105 7 An4 An5 Ac6 Ate8 Ac20 1 purple purple purple purple
106 7 An4 Ag5 Ag6 Ate8 Ac20 3 purple purple purple purple
107 7 An4 An5 Ate6 Ate8 Ac20 2 purple purple purple purple
108 7 An4 An5 An6 Av8 Ac20 1 purple purple purple purple
109 7 An4 An5 Am6 Ate8 Ac20 3 purple purple purple purple
110 7 An4 Am5 Am6 Av8 Ac20 4 purple purple purple purple
111 7 An4 Am5 Am6 Ate8 Ac20 4 purple purple purple purple
112 8 Al4 Al5 Al6 10 violet violet violet violet
113 8 Av4 Av5 Av6 12 violet violet violet violet
114 8 Ag4 Al5 Al6 7 violet violet violet violet
115 8 Ate4 Ar5 Al6 10 violet violet violet violet
116 8 Aspp4 Ar5 Al6 23 violet violet violet violet
117 8 Av4 Ar5 Av6 2 violet violet violet violet
118 8 An4 Al5 Al6 22 violet violet violet violet
119 8 An4 Al5 An6 1 violet violet violet violet
120 8 Av4 Ar5 Al6 12 violet violet violet violet
121 8 Av4 Al5 Al6 1 violet violet violet violet
122 9 Al4 Al5 Al6 Al8 Al20 1 grey grey grey grey
123 9 Am4 Am5 Am6 Am8 Am20 4 grey grey grey grey
124 9 An4 An5 An6 An8 An20 3 grey grey grey grey
125 9 Av4 Av5 Av6 Av8 Av20 3 grey grey grey grey
126 9 Aspp4 Aspp5 Aspp6 Aspp8 Aspp20 5 grey grey grey grey
127 9 An4 An5 An6 An8 Ac20 13 grey grey grey grey
128 9 An4 An5 An6 Ase8 Ase20 16 grey grey grey grey
129 9 Am4 Am5 Am6 Am8 Ase20 2 grey grey grey grey
130 9 Ate4 Ate5 Ate6 Ate8 Ac20 10 grey grey grey grey
131 9 Am4 Am5 Aspp6 Am8 Aspp20 6 grey grey grey grey
132 9 Ato4 Ato5 Ato6 Av8 Ase20 3 grey grey grey grey
133 9 Am4 Ato5 Ato6 Am8 Ase20 3 grey grey grey grey
134 9 Ag4 Ag5 Ag6 Ate8 Ag20 3 grey grey grey grey
135 9 Ag4 Ag5 Ag6 Al8 Al20 2 grey grey grey grey
136 9 Ag4 Al5 Ag6 Al8 Al20 1 grey grey grey grey
137 9 Ag4 Al5 Ag6 Am8 Al20 1 grey grey grey grey
138 9 Am4 Av5 Ato6 Am8 Ase20 2 grey grey grey grey
139 9 Aspp4 Ate5 Ate6 Ate8 Aspp20 1 grey grey grey grey
140 9 Av4 Av5 Av6 Av8 Ase20 2 grey grey grey grey
141 9 Ac4 Av5 Ac6 Ac8 Ac20 7 grey grey grey grey
142 9 Al4 Al5 Ac6 Ac8 Ac20 1 grey grey grey grey
143 9 An4 Aspp5 Ac6 Ac8 Ac20 4 grey grey grey grey
144 9 An4 An5 An6 An8 Ase20 2 grey grey grey grey
145 9 Aspp4 Aspp5 An6 Ase8 Ase20 2 grey grey grey grey
146 9 Ac4 Aspp5 Ac6 Ac8 Ac20 2 grey grey grey grey
147 9 Ac4 Ate5 Ato6 Av8 Aspp20 1 grey grey grey grey
148 10 Ag4 Ag5 Ag6 Ag8 10 black black black black
149 10 Al4 Al5 Al6 Al8 1 black black black black
150 10 An4 An5 An6 An8 4 black black black black
151 10 Al4 Ag5 Al6 Al8 1 black black black black
152 10 Al4 Aspp5 Aspp6 Al8 1 black black black black
153 10 Ag4 Ag5 Ac6 Ac8 1 black black black black
154 10 Ag4 Ag5 Ag6 Ac8 20 black black black black
155 10 Ag4 Ag5 Am6 Am8 2 black black black black
156 10 Ag4 Ag5 Ag6 Am8 1 black black black black
157 10 An4 Ag5 An6 An8 1 black black black black
158 10 Ag4 Ag5 An6 An8 4 black black black black
159 10 Ag4 Ag5 Ag6 Ar8 3 black black black black
160 10 Ato4 Ato5 Ato6 Ase8 1 black black black black
161 10 Ato4 Aspp5 Ato6 Ase8 1 black black black black
162 10 Ato4 Ag5 Aspp6 Aspp8 1 black black black black
163 10 Ate4 Ag5 Aspp6 Aspp8 5 black black black black
164 10 Ag4 Ag5 Av6 Av8 1 black black black black
165 10 Ag4 Ag5 Ag6 Av8 2 black black black black
166 10 Ag4 Ag5 Ag6 An8 16 black black black black
167 10 Ag4 Ag5 Ag6 Ase8 16 black black black black
168 10 Ag4 Ag5 Ag6 Aspp8 8 black black black black
color.4
89 blue
90 blue
91 purple
92 purple
93 purple
94 purple
95 purple
96 purple
97 purple
98 purple
99 purple
100 purple
101 purple
102 purple
103 purple
104 purple
105 purple
106 purple
107 purple
108 purple
109 purple
110 purple
111 purple
112 violet
113 violet
114 violet
115 violet
116 violet
117 violet
118 violet
119 violet
120 violet
121 violet
122 grey
123 grey
124 grey
125 grey
126 grey
127 grey
128 grey
129 grey
130 grey
131 grey
132 grey
133 grey
134 grey
135 grey
136 grey
137 grey
138 grey
139 grey
140 grey
141 grey
142 grey
143 grey
144 grey
145 grey
146 grey
147 grey
148 black
149 black
150 black
151 black
152 black
153 black
154 black
155 black
156 black
157 black
158 black
159 black
160 black
161 black
162 black
163 black
164 black
165 black
166 black
167 black
168 black
Here is the code
#spit out structure details
str(sank_test)
'data.frame': 168 obs. of 12 variables:
$ GobySpecies: int 1 1 1 1 1 1 1 2 2 2 ...
$ X2014 : chr "An4" "Ate4" "Ate4" "Ate4" ...
$ X2015 : chr "Ate5" "Ate5" "Ate5" "Ate5" ...
$ X2016 : chr "An6" "Ate6" "Ate6" "Ate6" ...
$ X2018 : chr "An8" "Ate8" "Av8" "Ac8" ...
$ X2020 : chr "" "" "" "" ...
$ n : int 10 29 12 29 12 1 7 25 18 4 ...
$ color : chr "red" "red" "red" "red" ...
$ color.1 : chr "red" "red" "red" "red" ...
$ color.2 : chr "red" "red" "red" "red" ...
$ color.3 : chr "red" "red" "red" "red" ...
$ color.4 : chr "red" "red" "red" "red" ...
list.of.packages <- c("ggplot2","plotly","dplyr")
new.packages <- list.of.packages[!(list.of.packages %in% installed.packages()[,"Package"])]
if(length(new.packages)) install.packages(new.packages)
#load specific packages of interest
lapply(list.of.packages,library,character.only = TRUE)
nodes_test <- data.frame(name = unique(c(as.character(sank_test$GobySpecies),
as.character(sank_test$X2014),
as.character(sank_test$X2015),
as.character(sank_test$X2016),
as.character(sank_test$X2018),
as.character(sank_test$X2020))))
# create links_test dataframe
links_test <- data.frame(source = match(sank_test$GobySpecies, nodes_test$name) - 1,
target = match(sank_test$X2014, nodes_test$name) - 1,
value = sank_test$n,
stringsAsFactors = FALSE)
links_test <- rbind(links_test,
data.frame(source = match(sank_test$X2014, nodes_test$name) - 1,
target = match(sank_test$X2015, nodes_test$name) - 1,
value = sank_test$n,
stringsAsFactors = FALSE))
links_test <- rbind(links_test,
data.frame(source = match(sank_test$X2015, nodes_test$name) - 1,
target = match(sank_test$X2016, nodes_test$name) - 1,
value = sank_test$n,
stringsAsFactors = FALSE))
links_test <- rbind(links_test,
data.frame(source = match(sank_test$X2016, nodes_test$name) - 1,
target = match(sank_test$X2018, nodes_test$name) - 1,
value = sank_test$n,
stringsAsFactors = FALSE))
links_test <- rbind(links_test,
data.frame(source = match(sank_test$X2018, nodes_test$name) - 1,
target = match(sank_test$X2020, nodes_test$name) - 1,
value = sank_test$n,
stringsAsFactors = FALSE))
plot_ly(
type = "sankey",
orientation = "h",
node = list(pad = 15,
thickness = 20,
line = list(color = "black", width = 0.5),
label = nodes_test$name,color="black"),
link = list(source = links_test$source,
target = links_test$target,
value = links_test$value,color = c(sank_test$color,sank_test$color.1,sank_test$color.2,sank_test$color.3,sank_test$color.4)),
textfont = list(size = 10),
width = 1000,
height = 480
)
# Code
#make node colors same as link colors
plot_ly(
type = "sankey",
orientation = "h",
node = list(pad = 15,
thickness = 20,
line = list(color = "black", width = 0.5),
label = nodes_test$name,color=c("red","orange","yellow","green","cyan","blue","purple","violet","grey","black")),
link = list(source = links_test$source,
target = links_test$target,
value = links_test$value,color = c(sank_test$color,sank_test$color.1,sank_test$color.2,sank_test$color.3,sank_test$color.4)),
textfont = list(size = 10),
width = 1000,
height = 480
)
I figured out how to get rid of the loop, but now one species (2, color=orange) is no longer showing anything in the last 'column to the right in the figure. Here is what I troubleshooted:when generating the node file, the code automatically generated a node for the blanks in certain cells. That node was a blank label in the node dataframe (here in nodes_test dataframe). So I removed the specific blank label (row 46) in the nodes dataframe and ran the rest as usual.
Here is the nodes file initially so you can see the blank node that it created and then I have the code to remove it. Note, I also added a line of code that renamed the column to 'name':
1 G. aoyagii
2 G. axillaris
3 G. bilineatus
4 G. brochus
5 G. erythrospilus
6 G. fuscoruber
7 G. histrio
8 G. oculolineatus
9 G. quinquestrigatus
10 G. rivulatus
11 A. nasuta2014
12 A. tenuis2014
13 A. millepora2014
14 A. torresiana2014
15 A. spp.2014
16 A. cerealis2014
17 A. loripes2014
18 A. rosaria2014
19 A. gemmifera2014
20 A. valida2014
21 A. tenuis2015
22 A. nasuta2015
23 A. millepora2015
24 A. cerealis2015
25 A. valida2015
26 A. torresiana2015
27 A. spp.2015
28 A. gemmifera2015
29 A. rosaria2015
30 A. loripes2015
31 A. nasuta2016
32 A. tenuis2016
33 A. millepora2016
34 A. cerealis2016
35 A. gemmifera2016
36 A. loripes2016
37 A. valida2016
38 A. torresiana2016
39 A. spp.2016
40 A. rosaria2016
41 A. nasuta2018
42 A. tenuis2018
43 A. valida2018
44 A. cerealis2018
45 A. loripes2018
46
47 A. rosaria2018
48 A. gemmifera2018
49 A. spp.2018
50 A. selago2018
51 A. millepora2018
52 A. nasuta2020
53 A. cerealis2020
54 A. spp.2020
55 A. selago2020
56 A. loripes2020
57 A. rosaria2020
58 A. tenuis2020
59 A. valida2020
60 A. millepora2020
61 A. gemmifera2020
here is the code for removing that node
#NOW WITH NA NODE REMOVED
#remove node that is NA
nodes_test = data.frame(nodes_test[-c(46),])
#rename column
colnames(nodes_test)[1]='name'
答案1
得分: 0
我已经搞清楚了,所以我在这里发布,以防其他人有同样的问题。在生成节点文件时,代码会自动生成某些单元格中空白的节点。该节点是节点数据框中的一个空白标签(在这里是nodes_test数据框中的第46行)。因此,我删除了节点数据框中特定的空白标签(第46行),然后像往常一样运行了其余部分。
这是最初的节点文件,以便您可以看到它创建的空白节点,然后我有代码来删除它。请注意,我还添加了一行代码来将列重命名为'名称':
1 G. aoyagii
2 G. axillaris
3 G. bilineatus
4 G. brochus
5 G. erythrospilus
6 G. fuscoruber
7 G. histrio
8 G. oculolineatus
9 G. quinquestrigatus
10 G. rivulatus
11 A. nasuta2014
12 A. tenuis2014
13 A. millepora2014
14 A. torresiana2014
15 A. spp.2014
16 A. cerealis2014
17 A. loripes2014
18 A. rosaria2014
19 A. gemmifera2014
20 A. valida2014
21 A. tenuis2015
22 A. nasuta2015
23 A. millepora2015
24 A. cerealis2015
25 A. valida2015
26 A. torresiana2015
27 A. spp.2015
28 A. gemmifera2015
29 A. loripes2015
30 A. rosaria2015
31 A. nasuta2016
32 A. tenuis2016
33 A. millepora2016
34 A. cerealis2016
35 A. gemmifera2016
36 A. loripes2016
37 A. valida2016
38 A. torresiana2016
39 A. spp.2016
40 A. rosaria2016
41 A. nasuta2018
42 A. tenuis2018
43 A. valida2018
44 A. cerealis2018
45 A. loripes2018
46
47 A. rosaria2018
48 A. gemmifera2018
49 A. spp.2018
50 A. selago2018
51 A. millepora2018
52 A. nasuta2020
53 A. cerealis2020
54 A. spp.2020
55 A. selago2020
56 A. loripes2020
57 A. rosaria2020
58 A. tenuis2020
59 A. valida2020
60 A. millepora2020
61 A. gemmifera2020
#现在已删除NA节点
#删除NA节点
nodes_test = data.frame(nodes_test[-c(46),])
#重命名列
colnames(nodes_test)[1]='名称'
英文:
I figured it out, so I am posting here in case someone else has the same problem. When generating the node file, the code automatically generated a node for the blanks in certain cells. That node was a blank label in the node dataframe (here in nodes_test dataframe). So I removed the specific blank label (row 46) in the nodes dataframe and ran the rest as usual.
Here is the nodes file initially so you can see the blank node that it created and then I have the code to remove it. Note, I also added a line of code that renamed the column to 'name':
1 G. aoyagii
2 G. axillaris
3 G. bilineatus
4 G. brochus
5 G. erythrospilus
6 G. fuscoruber
7 G. histrio
8 G. oculolineatus
9 G. quinquestrigatus
10 G. rivulatus
11 A. nasuta2014
12 A. tenuis2014
13 A. millepora2014
14 A. torresiana2014
15 A. spp.2014
16 A. cerealis2014
17 A. loripes2014
18 A. rosaria2014
19 A. gemmifera2014
20 A. valida2014
21 A. tenuis2015
22 A. nasuta2015
23 A. millepora2015
24 A. cerealis2015
25 A. valida2015
26 A. torresiana2015
27 A. spp.2015
28 A. gemmifera2015
29 A. rosaria2015
30 A. loripes2015
31 A. nasuta2016
32 A. tenuis2016
33 A. millepora2016
34 A. cerealis2016
35 A. gemmifera2016
36 A. loripes2016
37 A. valida2016
38 A. torresiana2016
39 A. spp.2016
40 A. rosaria2016
41 A. nasuta2018
42 A. tenuis2018
43 A. valida2018
44 A. cerealis2018
45 A. loripes2018
46
47 A. rosaria2018
48 A. gemmifera2018
49 A. spp.2018
50 A. selago2018
51 A. millepora2018
52 A. nasuta2020
53 A. cerealis2020
54 A. spp.2020
55 A. selago2020
56 A. loripes2020
57 A. rosaria2020
58 A. tenuis2020
59 A. valida2020
60 A. millepora2020
61 A. gemmifera2020
#NOW WITH NA NODE REMOVED
#remove node that is NA
nodes_test = data.frame(nodes_test[-c(46),])
#rename column
colnames(nodes_test)[1]='name'
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论