我正在嘗試在函式中對 data.table 進行子集化,但通過 using 進行子集化!is.na(x)不起作用。我知道它可以作業,因為當我在一個更簡單的問題上構建我的示例時,子集呼叫作業正常。
library(data.table)
library(ggpubr)
tj = as.data.table(cbind(Name = c("Tom", "Tom", "Tim", "Jerry", NA, "Jerry", "Tim", NA),
var1 = c(12, 12, 20, 30, 31, 21, 21, 31),
var2 = c(12, 11, 27, 32, 31, 11, 21, 41),
var3 = c(10, 10,11, 13, 12, 12, 11, 10),
time = as.numeric(c(1, 2, 1,1, 1,2,2,2))))
plot.tj<- function(dat = tj, color = NULL) {
name <- names(dat)[2:4] # a factor of names to loop over
for (i in seq_along(name)) {
plotms <- ggline(dat[!is.na(color),], x = "time", y = name[i], color = color)
print(plotms)
}
}
plot.tj(color = "Name")
預期的輸出是 3 個 var 圖,但沒有 NA 組。
uj5u.com熱心網友回復:
問題是您的變數color是一個字符,因此您必須get在 data.table 中將其呼叫為子集。這有效:
plot.tj<- function(dat = tj, color = NULL) {
name <- names(dat)[2:4] # a factor of names to loop over
for (i in seq_along(name)) {
plotms <- ggline(dat[!is.na(get(color)),], x = "time", y = name[i], color = color)
print(plotms)
}
}
plot.tj(color = "Name")
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/461542.html
上一篇:為什么在SQLServerWhile回圈中出現錯誤?
下一篇:計算值在串列中連續遇到2次的次數
