我的功能不起作用。這是資料框(它比這個大,但其余的與這個函式無關):
df <- data.frame(TypesOfTouch = c("Hug","Handshake","Kiss"))
我將使用該向量來檢查它是否與資料框匹配并轉換為它們各自的數字:
Vec <- c("Stroke","Caress","Hug")
所以我寫了這個函式:
Converter <- function(VectorInp,Col){
for (i in 1:nrow(df)){
if (is.element(df[i,Col],VectorInp)){
df[i,Col] <- which(VectorInp == df[i,Col])
}
}
Converter(Vec,1)
奇怪的是,當代碼沒有應用于如上所示的函式時,它仍然有效。因此,我想知道問題是否可能是它無法輸入向量。但是,它仍然是一個向量作為輸入(使用(~is.vector(VectorInp))
.
作為參考,這段代碼可以作業并且做同樣的事情(但它不是一個函式):
for (i in 1:nrow(df)){
if (is.element(df[i,1],Vec)){
df[i,1] <- which(Vec == df[i,1])
}
}
有任何想法嗎?
uj5u.com熱心網友回復:
你很近。你沒有輸出的原因是你的函式沒有return
什么。目前您沒有包含允許修改后的資料框離開函式范圍的命令。
所以你可能想做:
Converter <- function(VectorInp, Col) {
for (i in 1:nrow(df)) {
if (is.element(df[i, Col], VectorInp)) {
df[i, Col] <- which(VectorInp == df[i, Col])
}
}
return(df)
}
Converter(Vec, 1)
# Type
# 1 3
# 2 Handshake
# 3 Kiss
而不是return(df)
你也可以簡單地寫一下df
。
資料:
df <- data.frame(Type = c("Hug", "Handshake", "Kiss"))
Vec <- c("Stroke", "Caress", "Hug")
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/492281.html