如何为R中的函数向量指定与参数相同的值?

如何为R中的函数向量指定与参数相同的值?,r,apply,R,Apply,我在R中有这个代码: RdWh <- colorRampPalette(c("red", "white")) GrWh <- colorRampPalette(c("green", "white")) BlWh <- colorRampPalette(c("blue", "white")) color.gradient.3 <- c(RdWh, GrWh, BlWh) 如何实现这一点?您可以这样做 cg3 <- function(n) sapply(color.g

我在R中有这个代码:

RdWh <- colorRampPalette(c("red", "white"))
GrWh <- colorRampPalette(c("green", "white"))
BlWh <- colorRampPalette(c("blue", "white"))
color.gradient.3 <- c(RdWh, GrWh, BlWh)
如何实现这一点?

您可以这样做

cg3 <- function(n) sapply(color.gradient.3, function(x) x(n))

cg3(10)
      [,1]      [,2]      [,3]     
 [1,] "#FF0000" "#00FF00" "#0000FF"
 [2,] "#FF1C1C" "#1CFF1C" "#1C1CFF"
 [3,] "#FF3838" "#38FF38" "#3838FF"
 [4,] "#FF5555" "#55FF55" "#5555FF"
 [5,] "#FF7171" "#71FF71" "#7171FF"
 [6,] "#FF8D8D" "#8DFF8D" "#8D8DFF"
 [7,] "#FFAAAA" "#AAFFAA" "#AAAAFF"
 [8,] "#FFC6C6" "#C6FFC6" "#C6C6FF"
 [9,] "#FFE2E2" "#E2FFE2" "#E2E2FF"
[10,] "#FFFFFF" "#FFFFFF" "#FFFFFF"

cg3为了避免编写大量对
colorrmppalete()
的调用,您可以将颜色向量放入一个列表,
color
,并通过
sapply()
运行该列表,在该列表中,我们还可以在每次运行时同时调用
n=10
。然后根据需要使用
c()
进行换行以获得向量结果

color <- list(RdWh = c("red", "white"), GrWh = c("green", "white"), BlWh = c("blue", "white"))
c(sapply(color, function(x) colorRampPalette(x)(10)))
color这个怎么样:

color.gradient.3 <- function(n){
  RdWh <- colorRampPalette(c("red", "white"))
  GrWh <- colorRampPalette(c("green", "white"))
  BlWh <- colorRampPalette(c("blue", "white"))
  c(RdWh(n), GrWh(n), BlWh(n))
}

color.gradient.3(10)

color.gradient.3刚刚
lappy(color.gradient.3,函数(x)x(10))
(您可能希望
取消列出结果)。谢谢,您能将其写入答案,并将结果输出为向量吗?我如何获得向量?它是一个矩阵,因此可以作为向量(列)处理-例如
cg3(10)[15]
cg3(10)[5,2]
“#71FF71”
如何获得向量?@lanselibai-现在是向量了
color.gradient.3 <- function(n){
  RdWh <- colorRampPalette(c("red", "white"))
  GrWh <- colorRampPalette(c("green", "white"))
  BlWh <- colorRampPalette(c("blue", "white"))
  c(RdWh(n), GrWh(n), BlWh(n))
}

color.gradient.3(10)
color.gradient.3 <- function(n){
  RdWh <- colorRampPalette(c("red", "white"))
  GrWh <- colorRampPalette(c("green", "white"))
  BlWh <- colorRampPalette(c("blue", "white"))
  c(RdWh(n/3), GrWh(n/3), BlWh(n/3))
}

color.gradient.3(30)