如何迭代数据框中的列以更改其值

问题描述 投票:1回答:3

我有一个数据框,看起来像:

ID     A     B    
 0     8    25  
 1    16   123  
 2     4   120  
...             ...

我现在要做的是例如迭代列'A'并使用单元格的值调用函数并将其返回到同一位置。

例如,像(x ^ 2)-1的函数。

int calculation(int val){
   return val*val-1;
}

...code...

while(i<A.length){
  A[i] = calculation(A[i]);
}

所以结果应该是这样的。

ID     A     B    
 0    63    25  
 1   265   123  
 2    15   120  
...             ...


我是R的新手,如果你知道一些好的基本指南或科学绘图书籍,请告诉我。 :-)

谢谢你的帮助。

r loops function-calls
3个回答
4
投票

这在R中是非常简单的任务。

a<-c(8,16,4)
b<-c(25,123,120)
df<-data.frame(a,b)

calculation<-function(a){
  a^2-1
}


# Method 1
df$a<-(df$a^2)-1

# Method 2
df$a<-calculation(df$a)

0
投票

这是一个非常简单的例子,使用你的data.frame(比如说df)

#Define your function as
calcualtion <- function(x){
  x*x - 1
}

#Suppose you want to call it on column A. Use sapply function as
df$A <- sapply(df$A, calcualtion)

result:
  ID   A
1  0  63
2  1 255
3  2  15

0
投票

R的美妙之处在于其简约。如果您想对列A应用一些操作:

df[["A"]] = ((df[["A"]]*df[["A"]]) - 1) 

此外,我强烈建议谷歌搜索“R中的矢量化”。

© www.soinside.com 2019 - 2024. All rights reserved.