R:在特定列上应用函数,保留数据帧的其余部分

Jos*_*chi 10 r dataframe sapply

我想学习如何在我的数据帧的特定列上应用函数,而不"排除"我的df中的其他列.例如,我想将一些特定列乘以1000,并保留其他列.

使用sapply函数,例如:

    a<-as.data.frame(sapply(table.xy[,1], function(x){x*1000}))
Run Code Online (Sandbox Code Playgroud)

我得到新的数据帧,第一列乘以1000,但没有我在操作中没有使用的其他列.所以我的尝试就是这样做:

    a<-as.data.frame(sapply(table.xy, function(x) if (colnames=="columnA") {x/1000} else {x}))
Run Code Online (Sandbox Code Playgroud)

但是这个没用.

我的解决方法是为两个数据帧提供另一行ID,然后将旧数据框与新创建的数据框合并以获得完整的数据帧.但我认为必须有更好的解决方案.不是吗?

Sac*_*amp 6

如果您只想对一个或几个列进行计算,您可以使用transform或只是手动索引:

# with transfrom:
df <- data.frame(A = 1:10, B = 1:10)
df <- transform(df, A = A*1000)

# Manually:
df <- data.frame(A = 1:10, B = 1:10)
df$A <- df$A * 1000
Run Code Online (Sandbox Code Playgroud)