R 将应用函数的结果存储在新列中

R 将应用函数的结果存储在新列中,r,apply,R,Apply,我的数据如下 A<-c(1999,1999, 2001, 2001) B<-c("A", "D", "A", "D") df<-data.frame (A, B) 为什么它复制相同的colnameA而不创建列C?我们不需要对单个列使用apply循环,可以使用 df$C <- ifelse(df[,1] > 2000, 2000, df[,1]) 因此,列已经存在,但它是一个矩阵 df$C # A #[1,] 1999 #[2,] 1999 #[3,

我的数据如下

A<-c(1999,1999, 2001, 2001)
B<-c("A", "D", "A", "D")
df<-data.frame (A, B)

为什么它复制相同的colname
A
而不创建列
C

我们不需要对单个列使用
apply
循环,可以使用

 df$C  <- ifelse(df[,1] > 2000, 2000, df[,1])
因此,列已经存在,但它是一个
矩阵

df$C
#      A
#[1,] 1999
#[2,] 1999
#[3,] 2000
#[4,] 2000
与其分配
矩阵
,不如将其转换为
向量

df$C <- as.vector(apply(df[1], 2, function(x) ifelse(x > 2000, 2000, x)))
df$C
#[1] 1999 1999 2000 2000
df$C 2000,2000,x)))
df$C
#[1] 1999 1999 2000 2000

为什么要对单个列应用
apply
,只需执行
df$C 2000]
df$C
str(df)
#'data.frame':   4 obs. of  3 variables:
#$ A: num  1999 1999 2001 2001
#$ B: Factor w/ 2 levels "A","D": 1 2 1 2
#$ C: num [1:4, 1] 1999 1999 2000 2000
# ..- attr(*, "dimnames")=List of 2
#  .. ..$ : NULL
#  .. ..$ : chr "A"
df$C
#      A
#[1,] 1999
#[2,] 1999
#[3,] 2000
#[4,] 2000
df$C <- as.vector(apply(df[1], 2, function(x) ifelse(x > 2000, 2000, x)))
df$C
#[1] 1999 1999 2000 2000