这是我想要做的: 1.读入csv文件 2.根据条件创建列号107并从列67复制值:'如果第70列中的行值为“是”,则仅复制值
代码:
report <- read.csv("C:\\Users\\ha317981\\Desktop\\practice\\input.csv", header=1)
for(i in 1:length(report[[70]])-1){
if(report[[i, 70]] =="Yes"){
report[[i,107]] <-report[[i, 67]]
}
i<- i + 1
}
错误:
[[.default
中的错误(col,i,exact = exact): 尝试在get1index中选择少于一个元素
答案 0 :(得分:2)
您可以使用矢量化操作替换您的代码,如下所示。
import math as m
x=1.2
k=0
N=25
s=0
sign=1.0
while k<N:
term=sign*x**(k)/m.factorial(k)
s=s+term
k += 2
sign = -sign
print(s)
答案 1 :(得分:2)
您还可以使用与mutate
配对的dplyr
包中的ifelse
。
来自文档:
&#34; Mutate添加新变量并保留现有变量; transmute丢弃现有变量。&#34;
require(dplyr)
report <- read.csv("C:\\Users\\ha317981\\Desktop\\practice\\input.csv", header=1)
# mutate(tbl_df, NewColumn = Value, ...)
newReport <- mutate(report, Col107 = ifelse(Col70 == "Yes", Col67, NA))
这将根据第70列的值在您的(可能是?)数据框中创建一个新变量,其中值将从第67列或NA
复制。