Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:对特定列应用函数,保留数据帧的其余部分_R_Dataframe_Sapply - Fatal编程技术网

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

R:对特定列应用函数,保留数据帧的其余部分,r,dataframe,sapply,R,Dataframe,Sapply,我想学习如何在数据帧的特定列上应用函数,而不从df中“排除”其他列。例如,我想将一些特定的列乘以1000,并保持其他列不变 使用sapply函数,例如: a<-as.data.frame(sapply(table.xy[,1], function(x){x*1000})) a<-as.data.frame(sapply(table.xy, function(x) if (colnames=="columnA") {x/1000} else {x})) a如果您只想

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

使用sapply函数,例如:

    a<-as.data.frame(sapply(table.xy[,1], function(x){x*1000}))
    a<-as.data.frame(sapply(table.xy, function(x) if (colnames=="columnA") {x/1000} else {x}))

a如果您只想对一列或几列进行计算,您可以使用
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
#带transfrom:

df以下代码将只对指定的列应用所需的函数。 我将创建一个简单的数据框作为可复制的示例

(df <- data.frame(x = 1, y = 1:10, z=11:20))
(df <- cbind(df[1], apply(df[2:3],2, function(x){x*1000})))

(df在
dplyr
中,我们将使用
mutate_at
,您可以在其中选择或排除(通过在变量名称前面加“-”减号)特定变量。 您可以只命名一个函数

df%
在(变量(列)、刻度)处进行变异

或者创造你自己的

df%

在(vars(columnA,columnC),function(x){do this})

如果我有很多列(n=30),我该怎么做?键入所有的名称将是太多的工作了…是的,实际上我总是这样对数据帧进行计算:
谢谢你的评论,但是谢谢!我正在寻找类似这样的东西和
cbind()
工作正常。